[web/data] Fix userCallbackThenUpdateUI to completely replace old DOM elements
Without the 'swap' parameter, userCallbackThenUpdateUI() would replace
the _children_ of the component with a new version of the componenent,
thus creating nested divs/spans/buttons/etc.
Closes #4881299
<div id="ajaxroot">
<div class="ajaxHtmlHead">
<script src="http://foo.js" type="text/javascript"> </script>
<link rel="stylesheet" type="text/css" media="all" href="qunit.css" />
</div>
<h1>Hello</h1>
</div>