Port to Batteries 2.0

Batteries 2.0 makes some minor changes that have a somewhat pervasive
effect:
  - Use open Batteries instead of open Batteries_uni
  - Std functions moved into pervasives
  - Map and Set no longer contain predefined maps and sets.
  - Map.S.filter becomes Map.S.filterv.
  - Function app (low precedence) is now @@ instead of **>
  - List no longer has labels.
Eliminate (most) warnings

Enable nearly all warnings in the compiler, and eliminate their
occurrences from the source.  The only one remaining is '4': "Fragile
pattern matching: matching that will remain complete even if
additional constructors are added to one of the variant types
matched."  There are a few types in the program with a bunch of
constructors that would be tedious to match fully.
Move the backup driver into the backup Module

This will allow the manager to invoke backups without needing circular
dependencies in modules.
Use the new ksprintf2 calls for user formatting

Batteries now includes a ksprintf2 call that accepts arguments with
"%a" that match those available in each package.  This allows things
such as '"%a" (List.print Int.print) intlist' to be used to print a
list of integers.
Implement a backup manager

Inspired by the Scala version, this performs all of the steps of a
backup, including snapshots, integrity checks, rsyncs, and the backup
itself to be done in a single command invocation of odump.  The
particulars are described in the config file, which gives the hosts
and the volumes that can be backed up.

The code handles several different filesystem types (with and without
lvm), and tries to cleanup after itself if something goes wrong.