The new `migrate` function takes in a path to the old `z` database and
naively parses it to add to the database. It sets the epoch to be the
current time in order to prevent scaling down old directories from the
`z` database -- at least until `zoxide` is up and running.
The program will fail if the user already has a database, so as to
prevent tainting it in any way. It will also fail if the database is not
in the expected format -- e.g. if it doesn't follow the
`/path/to/somewhere|1.0101|10101010101` schema. The way this is
validated is by looking for 2 pipe characters and erroring if there is
only 1 (`first_pipe_idx == last_pipe_idx`). It will ignore any dead
paths if the user has not cleaned their database recently.
* Migrate errors from failure to anyhow
* Migrate argument parsing from clap to structopt
* Empty z command now goes to $HOME
* DB updates are now atomic and isolated