Deploy SystemException, UserException

I propose to adopt an exception model, where an exception is treated as either a **contingency** (a checked exception), a **user error** (an unchecked `UserException`) or a **fault** (an unchecked `SystemException`).

See <https://code.google.com/p/solidbase/wiki/ExceptionHandlingGuideline> for details.