Implement support for abstract models - include basic hierarchy tests. Closes #44.
Merge pull request #180 from spectras/feature/abstract

Implement support for abstract models
Public documentation enhancement and update.
Includes minor internal documentation fixes in place linked to from the public part