New Service model

* Node, Environment, Cookbook, and Role
* refactor http for new client access method.
  MakeRequest no longer Do's the request, this will allow our other functions a chance to modify the request before its made, we probably want to rename this to NewRequest
* Add GetVersion and List to CookbooksService
* Add response code handling to client requests
  Cause you know ... handling those is pretty good.
* magicRequestDecoder, DRYS out all the things
* stopped returning pointers to objects that should be values
* heaps more testing
* Added a Create to EnvironmentService and Create/Put for RoleService
* move the body copy out beforoe the http.NewRequest
  This way we get at the body bytes before the request has a chance to
  muck with it. I chose to use a 512bytesBuffer so I could use the copy
  func on the body input. This commit makes all the tests pass
* JSON Encoder with chef.JSONReader() which deprecates the Type.Read() methods
  moving away from adding the Reader Interface on types and having an
  explicit JSONReader for converting chef objects to JSON
* update to use CircleCI