Add Observations & CsvObservations classes

The purpose of these classes is to make an easy way to load observation
data (datetime, height) from a source such as CSV, and handle any
wrangling to ie numpy when required.

- `Observations` is an abstract-base-class defining a basic interface
  which all subclasses must adhere to.
- `CsvObservations` reads observations from an arbitrary-sized CSV with
  UTC dates.

See also the tests for CsvObservations which capture its behaviour.