Added custom exceptions [WIP]

Inspired at http://www.doctrine-project.org

Some notes:

- exception names are taken from [Doctrine](http://apigen.juzna.cz/doc/doctrine/dbal/tree.html) (which are probably taken from Oracle/Java)
- I think that fine-granularity is required for "runtime" exceptions (ConstraintViolationException and its descendants), not for "logic" exceptions (syntax errors, table not found, etc)
- the separation between DriverException and ServerException is IMHO not needed. (It can be added in future with no BC break)
- `new PDO` throws bad exceptions in sense that getCode returns driver-specific error code instead of SQLSTATE error code as stated in documentation. (`$errorInfo` is NULL).
- `ISupplementalDriver::convertException` is static to allow handle exceptions occured by `new PDO`. But I think that this is not needed, we can these exceptions convert to ConnectionException (or DriverException?) without driver.
I don't know how to trigger warning, when user catches "old" PDOException, so it is impossible to gradually move to new exceptions