Adds json parameter for POST requests
Adds review changes
Changes check on base and json. Fails on tests.
Fixes typo in test
Fix a couple of issues I noticed

- Don't _ prefix json in prepare_body
- Don't initialize json to []
- Don't initialize json to {}
- Reorder parameters to PreparedRequest.prepare
- Remove extra parentheses
- Update docstring
Merge pull request #2258 from willingc/add-json

Add json parameter