Feature/package tests

Work in progress

Includes the beginnings of a unification of the various custom C++ exception classes
Is this intentional?