MLBaseModel: Observable: Initial
This introduces an observer/observable pattern to the MLBaseModels.
This will be used as a foundation of having a better communication betweens models and controllers which will later allow us to have for example pagination, diffable collections, etc.
This MR is a cleaned, fixed-up and rebased version of PR-382 from Github.