Use SKLAPIRequest for holding request info.

- lets us defer actual NSURLRequest construction till later
- allows modification of the request to be made at different points
- easy configuration of request via APIRequest's properties, rather than manually
  modifying NSURLRequest's values
API requests can have queryParam encoding & specific contentType header
Handle 404 errors
Fix non-JSON error handling