Update baseURI checking/pull and fallback, fixes #17661

This commit fixes an issue in IE10 and IE11 (which do support WebSockets). The .baseURI is not valid in those browsers, so you have to have a more robust fallback and check. The fix below was authored and tested against an actual websocket supporting server and has been verified to work. I also spent some time and did AMD cleanup on the module, getting rid of dojox. dojo. and most deprecated API usage. It now no longer forcibly expects a dojox. namespace and such.
is it ever the case that we don't have a `baseURI` by this point?  i'd rather not have this block here if we don't understand when we will ever get to it.  i would expect that as long as we're in a browser then all we'll need is

```js
var baseURI = document.baseURI || window.location.href;
var ws = new WebSocket(new dBaseUrl(baseURI.replace(/^http/i,'ws'), args.url));
```