Updated Engine API to throw Exceptions, tests.

Added additional tests.
Removed VersionEngine::valid* functions.