IE 9+ fixes

* Fix making PUT/DELETE requests by uppercasing the HTTP method name
* This also fixes PATCH for Chrome/Safari
* Fix requests with undefined body on IE
* IE 9 fix for connection error
* Fix CSS being applied to test suite

The only test that now fails is the FormData test on IE 9. Maybe we should skip that test if FormData is unavailable?
Let's keep using `onload` but change the check to something like `if (status < 100 || status > 599) { reject() }`. My concern is that 12000 isn't remotely close to the problem domain (HTTP status codes) that we're familiar with in typical XHR code.