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 is what we agreed to. The object result is passed in to the can write call for two specific reason: 
1. It has the actual object value ( and the runtime type ) info which the formatter can look at when it is deciding if it can support writing it out. 
2. It has user defined content types ( as part of ContentTypes property). which was supposed to be used to decide on the content type for the response. 

With the current implementation though, the second point is kind of moot since now CanWriteResult is called for each of the content type headers ( both the accept header and the content type). 
We can now choose to pass only the object value, which would be cleaner in my opinion.