Create interface for observables

This is a first attempt to implement proper interfaces. The obserables present a good example for this, as the affected code is limited to a few lines.

@welsch has already started the implementation and feasibility test on a dedicated Branch FEATURE/VariableCollection.

Edited by Felix Metzner
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information