Add support for POST, allow all 2xx and 3xx replies, and return full response (with headers and such).

The API client needs to support the POST method (PUT/DELETE/HEAD can come later).  This adds a new method for supporting post actions with the typical JSON body.

With the new POST method, 200 is not the only type of successful response code.  We really should treat all 2xx and 3xx replies as a "success" and not reject the promise.

Finally, as a nice backwards-compatibility breaker, the promise for the index/get/post methods now resolves to a `{body: "...", res: {...}}` object rather than just the body.  We need access to the headers of the response, and that gives us the access we need.  `getResult` and `indexAll` are unchanged as they are purposefully just trying to access the data.

*Pull Request commit modified by @nubs.*