Reformatting a little for JSLint
Using alternate JSON.stringify/JSON.parse

Instead of using packer, using straight minified code as a big string.
Instead of using the `eval` version, using a minifed `JSON.parse` method instead.
Added comments and using eval to get through JSLint.

End result is approximately the same and there's just one potential warning for
using eval instead of many coding violations.  If you use other validation
tools, like jshint, this one line eval would be easier to ignore.
Restructruing code and supporting IE's 1223 status

Restructuring code so it is broken out into commented functions.

Handle a wider variety of errors.

IE may report status 1223 with a 204 No Content response.  At that point, one
can not get any of the headers.  Instead of getting CORS failures, this will
use the headers from a previous OPTIONS call.

* Do an OPTIONS call before the real call so we can get headers that may be
applicable to the response in the case that the response is a 204.

* If we get status code 1223, override the code and message to be reasonable.
Override the CORS-related headers to be the OPTIONS call's response.

* Must check the OPTIONS before we do any API manipulation in case we are
changing the information on the server.  It is possible that we are allowed
to POST once to a resource and it takes an action.  A subsequent OPTIONS call
might rightly say that you can not POST to that resource again, thus we must
not call OPTIONS after our POST.
Turn the warning back on
Merge pull request #8 from fidian/fix-ie-1223

Handle Internet Explorer's status=1223 quirk + restructuring