Added custom exceptions [WIP]

Inspired at http://www.doctrine-project.org
It seems that you forgot to use this :smile: And maybe `abstract`?