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.
I'm asking because in the old world the assumption made when optimizing this code in the legacy would have been
> the code that parses the accept header is locked down and cannot be changed

In the new world, we're writing the code that parses the accept header, so we might just build sorting into it, and that may be faster. I'm wary of keeping these sort of artifacts around without a disclaimer, because it gives the impression that we shouldn't look into it further.

You might just want to attach some warning text that this is an old comment if that's the case.