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.
This need to change - The pattern we are using is that there is a provide that reads the options instead of hand coding this (and getting into the bug that Ryan is describing).

Also it's probably a good idea to avoid using the service directly, since you always need the formatters, just type activate the contentresult (or perhaps better, and haven't read through the whole PR at this point, resolve an IContentResult from the DI container (and register as transient, so this can address changing the behvaior of the content negotiator)