Adding support for optimistic concurrency

Changes addressing issue #51 
* Retrieving an object from table storage can now include the entities ETag property by using:
   * The ETagAttribute on a class property when retrieving a typed object.
   * Setting the TableStorageProvider's ShouldIncludeETagWithDynamics property to true when retrieving objects as a dynamic.
* When executing an update, merge, or delete operation on an entity with an ETag property, it will throw an EntityHasBeenChangedException if ETag's do not match. (Meaning the table storage object has changed since receiving it).
   * These operations are backwards compatible. When the entity being operated on does not include an ETag property, it will force the change regardless of the state of the object in table storage.
   * Upserts do not respect ETag's regardless if they are included or not, per the api documentation (http://msdn.microsoft.com/en-us/library/windowsazure/hh452242.aspx)
   * Deletes only respect optimistic concurrency when calling the delete operation on the instance. The other call, deleting by partition key and row key will force the delete.

Side note: If pull request looks good, I can update the wiki with examples using this feature.