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
* JSONP and image beacons are now generally reusable, may expose under utils in a later release
* `uploadEvent` and `sendQuery` functions revert to XHR when URL exceeds a safety limit of 2000 characters (exposed as Keen.urlMaxLength