Exceptions hierarchy

Here is what I have. A few points to go over:

* I took the liberty of changing the name of some of the tests that I touched to express what is being tested within which class. If you would rather keep the original test names just let me know. I have no problem going back to them. Having looked at more tests they seem more BDD oriented instead of unit test/TDD oriented so I may have overstepped on the naming.

* I was considering splitting out the exceptions into a file for each exception class but wanted to check with you first. Either way is fine by me, your call.