sketch out a fluent query API

IFilterable<T> and companion interfaces provide a fluent API for
expressing table storage queries on partition and row keys.

AbstractQuery implements IFilterable and constructs a QueryDescriptor
that describes a query to be performed.
translate QueryDescriptor to query

AbstractAzureQuery extends AbstractQuery with the ability to generate a
table storage query from a QueryDescriptor.

In the next commit, we'll specialize AbstractAzureQuery for static and
dynamic queries, and refactor AzureTableEntityTableContext.
refactor Azure queries using fluent query API

We refactor AzureQuery, AzureDynamicQuery, and
AzureTableEntityTableContext to use the fluent query API.
refactor MemoryTableContext with fluent query API
expose fluent query API publically