Allow post requests with http body

These changes allow to do something like:

```
result = self.client.end.point(http_method='post', http_body={
    'name': 'Some Random Name'
})
```

The `http_body` value will be encoded as JSON and sent as the request body.