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.
Consider logging all caught exceptions