Send requests and handle the response

* Provide default configuration
* Resolve response data
* Transform errors
Handle bad responses (no body, weird status codes)
Parse url or components at initialization instead of dynamically
Support querystrings
Provide a toJSON method so requests can be serialized implicitly for batching
Delegate response handling to #fulfill and #reject

request#send now uses a generic interface to handle responses. It can parse angular success/error responses as well as generic object and boom. This will allow ConvexBatch to easily control fulfillment of requests with minimal logic.
Remove pluralize