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`
This code *may* leak, because success and error are referenced inside the defined `window[callbackName]`.

Read more here: https://www.meteor.com/blog/2013/08/13/an-interesting-kind-of-javascript-memory-leak (I'm not 100% sure this will leak, but it raised a flag)