Added support for a meta model for each model.
A meta model is lazily intialized; i.e. upon its first request.
A meta model is used to describe the representational aspect of its
model.
A meta model is a model.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>