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.
We should consider allowing adding writing additionalrespondcontentheaders (assuming the results is success) for example if we want to write a caching header when the result succeeded, there is not point where you can reliably do that.

One alternative is to provide a way to provide additional headers on the objectcontentactionresult that seems to look like an HttpResponseMessage. 

The user can alternatively put headers while executing the other result filters, and make an exception filter clear them out.

@lodejard @Eilon  @davidfowl