Issue 1753 - OData V4 service should not support DateTime

Added more guards to protect against mapping DateTime accidentally when
using the convention model builder.
Issue 1711 [Part 1] - When returning an Entity that contains an ETag
annotation, the ETag header should also be set.
https://aspnetwebstack.codeplex.com/workitem/1711

Created an ODataETagMessageHandler to take care of calculating and
adding the ETag Header to the response when it's a successful response
that returns a single resource with an ETag defined and the response
status code is different than NoContent.
Issue 1711 [Part2] - When returning an Entity that contains an ETag
annotation, the ETag header should also be set.
https://aspnetwebstack.codeplex.com/workitem/1711

Created a specific MapODataServiceRoute overload to make registering
per route HttpMessageHandlers in OData routes easier.
Issue 1718 - System.ArgumentNullException is thrown if a raw value of null
is requested.
https://aspnetwebstack.codeplex.com/workitem/1718

This change fixes the broader problem by handling null values in general,
not just for raw values. We replaced ODataNullValueAttribute with
ODataNullValueMessageHandler. This message handler will convert null
requests for individual entities or singletons into 404 responses and
will convert null requests for non collection properties (navigation
or structural) into 204 responses. This behaviour is not enabled by
default. The user needs to plug in the message handler as a per route
handler when he registers the OData route.
Issue 1711 [Part 1] - When returning an Entity that contains an ETag
annotation, the ETag header should also be set.
https://aspnetwebstack.codeplex.com/workitem/1711

Created an ODataETagMessageHandler to take care of calculating and
adding the ETag Header to the response when it's a successful response
that returns a single resource with an ETag defined and the response
status code is different than NoContent.
Merge branch 'jacalvar/issue1753b'