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.
There seem to be a lot of places in the code where try/catch is used for control logic. This is usually not a good idea. Is it possible to refactor this such that normal (non-exceptional) code paths don't require running through a try/catch block, and especially not using the catch as a normal part of flow control?