ATS: Update querying pipeline to meet Northwind spec

There is some work still to be done, but I wanted to submit this *before* list of changes get too big.

Made lots of improvements to get ATS working on the Northwind tests

Other features included:
Support for shadow state properties
Beginnings the Fluent API extension for ATS
Refactored POCO support to use already optimized clr accessors.
Refactored object creation to use factories and dependency injection

TODOs:
   Support for complex logic in server queries: (Queries can only AND together conditions)
   Optimization: reduce the multiple calls to the server made per query.
Configuring services in this way is interesting. It means that, assuming an application is using a single DI container, then it can either have batching or not have batching, as opposed to being able to use batching for some connections or some stores, but not others. This seems like a reasonable thing to me.

However, one downside is that when somebody is not setting up their own service provider and hence not calling AddAzureTableStorage directly then there is no way for them to change this setting. This may be fine if there is a reasonable default that almost everybody will want to use, but perhaps not so good if it is a common thing that people want to change.