Cleanup engine base class

- Add comments and abstract methods that all
  engines should implement.
- Adjust creation of the storage property so
  that it is created on first access instead
  of on initialization.
- Move notifiers to top level base class since
  they should be properties of all engines.

Change-Id: I36cf2b5435d12fa59e015ce5370644020093461d
Merge "Cleanup engine base class"