This fixes a lot of awkwardness that came from having the record()
functionality inside of store.py. It is still broken, but is much closer
to actually working now. I also sketched some data and io functionality,
which has no tests and is not yet working at all.
This is important for distributed settings, and will make merging
databases much simpler. This change is pretty extensive and includes a
lot of other stuff like moving some fields between tables, and
introducing the `local_metadata` table which is a key-value store and
holds the uuid of the "local" store, i.e. the one corresponding to the
directory holding that particular nancy.db.
This uses colorama so that is added to poetry. Next I'll add the diff
printing to the record command and have the corresponding store method
use the diff as input.
The record() program and cli is not yet working. For that we need a
working `FSDiff` next. Then we'll finally be ready to start recording
file information.
This is meant to hold schemas and migrations. It contains an
`__init__.py` due to a limitation of `importlib.resources` outlined in
detail here: https://github.com/python/importlib_resources/issues/58
Eventually the schema submodule will handle automatic migration of older
databases when importing into new stores.