Review adapter request

This pull request is to get the code reviewed.
Things to be reviewed
- Compact String implementation
- HttpRequest class
- The ToRequest method of Adapter
- The GoogleGeolocation (This implementation is not used in our integrated code)
This is a bad constructor interface for the following reasons - 
1. Both the parameters that are being passed in it are non-mandatory in real life, yet the constructor mandates them as the default.
2. Passing null is not safe for the first argument but safe for the second. This causes confusion with the consumers. Someone who tried passing null with the first parameter will encounter an error and maybe
never try to pass null to the second thinking that it will behave in the same way. This implicitly may create an opinion that all requests must have a body.. They will all start passing the next best thing.. an empty array.
3. It is actually more inconvenient to use the constructor passing a name value collection than to set values to the collection via the object later.
4. The actual things that a request should have are missing.. E.g, Method, Uri. You should not be able to create  a request without these or atleast they should default to something.