Refactor request handling for XHR, JSONP and image beacons

* XHR now attempts to use `MSXML2.XMLHTTP.3.0`, `MSXML2.XMLHTTP`, or `Microsoft.XMLHTTP` objects if `XMLHttpRequest` is not supported
* XHR, JSONP and image beacons are all now generally reusable, and may be exposed under utils in a later release, pending some signature (in)decisions for JSONP and beacons
* `uploadEvent` and `sendQuery` functions revert to XHR when URL exceeds `Keen.urlMaxLength`
That's a good question.. at this point we can log out a message, but I'm a bit apprehensive about using `Keen.log` more than we have without a way to turn it on/off. Would be good to hear what the rest of the team thinks about this situation, where XHR isn't supported and the payload goes over the URL length threshold.