make the POST data encoding generic, not just JSON

the encoding for POST data previously allowed only two options: as URL
parameters (ie, http_build_query; the default), or as JSON encoded data.

both of these were to do with how data should be processed prior to
passing in to cURL.

as a starting-point towards adding additional encoding options, this
commit replaces the previously-boolean ("JSON or not") encoding option
with a set of constants: ENCODING_URL or ENCODING_JSON.

For backwards-compatibility, these constants translate to "0" and "1"
respectively, so any previous calls to ->setJson({boolean}) should
remain unaffected. That said, this is technically a compatibility
breaking change.

setJson() itself has been re-written to use the new setEncoding()
functionality, into which the meat of setJson has been moved.
allow "raw" data to be passed in to a cURL request

this adds a new encoding type, ENCODING_RAW, to the Request class. This
encoding type takes the POST data "as is", merely ensuring it is a
string prior to passing it along to cURL itself.

this commit removes the requirement that setData() be given an array. A
raw string, or any stringable data, may be passed as well.

this commit adds magic raw*() methods to the cURL class, to complement
the json*() magic methods, as well as a "newRawRequest()" helper method.
Merge pull request #5 from wpalmer/raw-requests

implement "raw" requests