Change http.client Request so it accepts arbitrary request bodies

Currently, Request expects to be used for sending POST form data and simple GET requests, that's it. This is a problem because:

* Non-obviously, Parameters defined in class are ignored on a GET request (only the URL Query parameters are used).
* The entire request (including the body) is encoded as ASCII, causing character set problems.
* REST clients often need to POST json or other types of data.

Instead of throwing it all away, I've tried to fix this while keeping most of the public API backward compatible. The biggest change there is making headers and parameters equals, at the expense of duplicate parameter search efficiency (but duplicate parameters are uncommon anyway). I have removed ContentEncoder, since it isn't generally useful or user extensible. The serialisation API might be a good replacement in the future.

There are also some formatting changes that were made by the IDE's formatter. It looks like it hadn't been run on the Request file yet.