Initial move towards error handling, still very very naive.

 o Constraint violation errors are now converted to a driver-specific exception.
 o Refactored driver compliance tests to make it easy to build up a driver compliance
   test suite. See DriverCompatibilitySuite for more info.