Support binary request/response bodies (#57)

Request/Response/RequestTemplate are now fundamentally based on a bodyData field, which is a byte[].
For Request/RequestTemplate, if a charset is provided, it can be treated as text.
If you are only using text bodies, usage of the library should feel almost exactly the same.
There were some non-backwards-compatible signature changes that require a
major version bump, however.