Initial Model, Statement, Storage classes

These initial version of Model, Statement and Storage classes require that a World object be provided, so that multiple World instances with different storage mechanisms and models can be active at the same time. Also, this initial version of the Storage class requires parameters to set the storage type, instead of subclassing for each storage type as the Python implementation does.