[Ready for review] Handle C#/Azure DateTime range differences

Fixes https://github.com/TechSmith/hyde/issues/74

Old behavior/functionality:
* ```DateTime``` structs that fell below the values supported by table storage were throwing a generic ```InvalidOperationException``` with the message "Table storage returned 400 Bad Request" upon calling ```Save```
* This problem occurred on real table storage, but not on the emulator.

New behavior/functionality:
* A call to ```Add```  throws a ```ArgumentOutOfRangeException``` with a more helpful message. Since the param name was unavailable, I wasn't able to use the appropriate exception constructor to include it without doing some significant reworking of the converters.
* Users will see the same behavior on both real table storage and on the emulator.
* Two new static variables exist on ```TableStorageProvider``` for initializing ```DateTime``` and ```DateTimeOffset``` to the minimum values supported by table storage.
* Saves the user a network trip to find out that their request was bad.

This behavior should be the same for ```Update```, ```Upsert```, and ```Merge```

Yet to do:
* [x] Make this work with date time offsets
* [x] Choose a date -> string serialization format
* [x] Address precision issues (do we care?)