introduce TableItem

The TableItem class holds the hydratable properties of a hydrated or
dehydratd object, along with its partition and row keys. We'll build up
its functionality in stages, and then work it into TableStorageProvider,
ITableContext, and its implementations.

We start with support for constructing a TableItem from an object,
capturing its hydratable properties via reflection. A flag controls
behavior in the case where hydratable properties have names reserved by
Table Storage.
handle PK and RK attributes in TableItem creation
support creating TableItem without providing pk/rk
add TableItem support for dynamic objects

If an object implements IDynamicMetaObjectProvider, we use the
ImpromptuInterface library to extract dynamic properties.

In the case where throwOnReservedPropertyName is false and no partition
or row key were supplied to TableItem.Create, we use the values of the
PartitionKey and RowKey properties of the dynamic object, if they're
present. If partition and row keys *were* supplied, they must match the
values of the PartitionKey and RowKey properties, or we throw an
ArgumentException.
refactor TableStorageProvider to use TableItem

We start by refactoring the AddNewItem, Upsert, and Update methods on
ITableContext to take a TableItem. The rest of the refactoring follows
from there.
TableItem.ReservedPropertyBehavior for API clarity

Having a boolean flag in the TableItem factory methods hinders
readability, so we introduce an enumeration to make the code more
self-documenting.
normalize TableStorageProvider method names

We were variously using 'item', 'instance', and 'entity' to mean the
same thing. We'll go with 'instance', to make a distinction from the
TableItem instances we generate from them.
Merge pull request #42 from mmcgill/AlternatePartitionAndRowKeyRefactor

Handle dynamic objects with partition key and row key properties
Pull in Storage 2.0.4.0 (fixes bug with Take)
Override .Take calls to query TableStorage
Support .Take method for dynamic objects
Add helper variables for range queries

These variables allow for unbounded queries across a partition
or table.  Ex. All entries with PK >= x.
Take -> Top, MemoryQuery -> Query
Merge pull request #43 from jkling/AddTableStorageQueries

Add support for more interesting queries to table storage like Top
Fix hyde csproj file
Merge pull request #45 from jkling/FixBuild

Fix hyde csproj file
Remove unused private method
Merge pull request #46 from jkling/FixFxCopErrors

Fix fxcop issues by removing unused private method
Roll OData back to 5.0.2.0 for azure storage client
Rollback edm for storage