Adding support for content negotiation.

This change consists of :
1. Conneg based on request headers, supports the following 3 scenarios:
	a. ContentType property on ObjectResult set to null or is empty.
	b. ContentType property on ObjectResult set to a single content type.
	c. ContentType property on ObjectResult set to multiple content types.

2. Parsing Helpers, comparers and extensions for comparing various http headers.
3. Tests.

Open workitems:
1. Remodel JsonResult and ContentResult to be a derivation of ObjectResult.
2. Add support for acceptcharset headers.
3. Produces Content Attribute.
4. Sample for adding a result filter for adding a custom formatter to the collection.
If you look at a previous commit, I had exactly that. A property hanging off of formattercontext which needs to be set here and then read in the ```WriteAsync``` method. That contract seemed odd - and not expected ( with no base implementation of ```WriteAsync```). If we want to avoid this in a clean way we would have to build up something like a temporary HttpResponseMessage, which is passed all around and is set everywhere, and finally written to the actual response ( both body and header) . (something very similar to web api. ). Lets talk on this.