Switch to webmock, add tests for nil values.

Hey guys, wanted to get your thoughts on this pr (it's a bit big). I noticed an issue where nil values was causing problems, and, instead of having to check each one, I thought I would be nice to scrub the hash of all nil values before marshaling.

In addition to that, I switched to using WebMock so that I could test the request bodies themselves.