On observation (row) update and delete do not remove data

IMPORT BEFORE DEPLOY NOTE: This PR requires a data migration, run:
```sh
python scripts/db/migrations/001_observations_add_deleted_at
```
which adds `{'deleted_at': 0}` to all existing observations.

First round of keeping historical data, currently on delete or update of a dataset row the data is removed from the collection or overwritten.

With this change, on deletion, the key `deleted_at` is set to the current time.  On update the same key is set on the existing record and a new record is created with the updated row.

On `find` any rows with `deleted_at` not set to 0 are ignored by default (MongoDB docs say this is faster than only having `deleted_at` for deleted rows and then using the `$exists` operator).

Currently, there is no client-accessible interface for accessing deleted rows.