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.
> The writeasync call is supposed to write the body, not the header ( of course some one can do so if they choose to). But this is explicitly conveying the intent to write the header.

This is an arbitrary choice. There's no advantage in offering a separate method for headers because anything you can accomplish there you can accomplish inside `WriteAsync`.