Naive initial structure for the model

The model will be broken into its own assembly to properly encapsulate
the classes that should be only interacted with via the facade.