Adding abstractions for request headers

Note, these abstractions are needed for content negotiation in mvc. 
The parsing code is a temporary implementation which should be replaced by a robust one.
Currently the code does not handle invalid headers.