Use custom exceptions

                   
|Q            |A  |
|---          |---|
|Bug Fix?     |n  |
|New Feature? |n  |
|BC Breaks?   |y  |
|Deprecations?|n  |
|Tests Pass?  |y  |
|Fixed Tickets|#8 |
|License      |MIT|
|Doc PR       |   |
                   

Closes #8

 Sent using [Gush](https://github.com/gushphp/gush)