Update Model class to match new coding conventions of ModelComponent

This is pull request for work started on Hackathon, mainly improving Model class with new coding convention of ModelComponent (e.g. replacing the old property style with the new property style). This also deals with a bunch of issues: #95, #99, #100, #101, #102.
In C++11 there is a built-in constant `nullptr` that is a type-safe replacement for `NULL`. So you could use either `!_system` or `_system == nullptr` without a warning. Which to use is a personal preference and might depend on what seems to convey the meaning better.