util/records: always return an utc timestamp

We must at all cost avoid going through the local time
utilities when dealing with naive dates.
util: provide a pair of coding/decoding helpers for snapshot serialization
util: make some bits of the extend docstring less obscure
tsio: make the snapshot class overrideable
cli/migrate-chunks: a slight speed bump using threads
cli: schema + data migration for low-level compression change
switch from zlib to zstd
snapshot: only compress if necessary

Wasting space on compression of small chunks is a bad idea.
Real world measurements would be nice, to understand the
overhead of the `packed` column.
Added tag 0.12.2 for changeset f496cebf01e3
tsio/replace: return en empty series rather than None (to mirror .update)
pkg: prepare 0.12.2
tsio/get+revdate: return an empty series rather than None
api/replace: also allow replacing a locally existing series, even if also remotely available
api: allow local update if series exists locally and remotely
test/api: show that we cannot update a local series if it exists remotely

This is too restrictive. If it exists locally it should be
util: fix blunder (noted by py38)
util/pack_series: be more robust against some kind of empty series
test/pack_series: exhibit issue with empty series

Pandas is sometimes weird, not all empty series
are born the same.
test/util: remove unused fixtures
test/util: prove that we handle correctly empty series