Furthers implementation of Contracts
Improves naming and scope of DateRange tests.
Improves exception throwing requirements / handling capabilities
Repository tests now check for repository-specific exceptions rather than built-in .NET exceptions, which are inconsistent across implementations.