Improve messages in exceptions

Some APIs return additional exception information in a known format. When this occurs, the message provided by the server is used for the exception that gets thrown. If the returned value could not be parsed in the known format, the default exception message for the HTTP status code is used.

The implementation of this feature includes two new classes which can be reused:

* `ResponseExtensions`: Provides the `TryGetHeader` extension method to get a header specified by the `HttpResponseHeaders` enumeration without requiring the developer to include the string literal representation of the header key
* `RestWebHeaderCollection`: Extends `WebHeaderCollection` by *not* treating particular headers (e.g. `Content-Type`) as reserved (see the documentation for [`WebHeaderCollection`](http://msdn.microsoft.com/en-us/library/system.net.webheadercollection.aspx) for additional details).