Refactor and update tests

Lots of refactoring, updates the tests to run again (still fails 2 tests), and adds support to pass the options hash through in post requests.
Agreed, and unless I'm mistaken I think this is Ruby 2. So we can further simplify it to something like this: 

```ruby 

@parsed_response = {
   code: raw_response.code, 
   message: raw_response
}
```