Exception to the rule - Introducing DataStoreOperationException

Introducing a DataStoreOperationException to identify when a data store
related exception occurs during save/query from a DbContext. This allows
tooling, framework, etc. to handle issues related to database
operations.

Also updating the existing DbUpdateException to inherit from the new exception
type so that the existing cases where this is thrown don't need to be wrapped
in a new exception.
These tests look more functional, which is fine but consider moving them. I would also put all of the exception interception tests together in a new test class.