Normalize the location field of the `User` model

Previously the only accepted format for the named field was
a `[latitude, longitude]` array.  Now that the field is a Leaflet's
`LatLng` object, all formats accepted by the latter are also accepted
when setting that field.
Bind user status change to the last access property

In preparation to a database migration, we want to be able to fetch
and set the last access timestamp from outside the `User` model, and
arrange that changing it triggers an update to the user's status.
Rename the `dbapi-root` task to `db-root`

We may support other database backends later, and the task is generic
enough for that.
Isolate DBAPI and abstract the database backend

This will allow us to support more backends and switch them at runtime
if we choose to do so in the future.
Support multiple URLs and modules in `db-root`
Move database backend selection to the build config

The `db-root` task is now called `db-config`, and now centralizes the
database connection URLs in a single file, which also contains a list
of available database backends.

The `util/dbapi` module has been adapted to allow setting of the DBAPI
root elsewhere, so it doesn't depend directly of the database config
module.  This operation is currently performed by `data/dbapi`.

Finally, it's now possible for the user to select a database backend
via a `localStorage` preference.
Add support for Firebase as database backend
Make sure optimized builds include the database backends