Simplify listener names. Use WeakListenable for the FrameDataModel.
Documentation and clean up.

Don't create a run directory if no data has been taken.
Documentation and clean up.

- Move ExperimentRunInfo into separate file.
- Rename Run to RunData.
Remove Context dependency from AbstractSensorData.
Add a data type plugin infrastructure.

This makes it easier to load a certain data type from disc.
Update docs.
Rename CameraSensorData and MicrophoneSensorData.