Persistence hardening - creates copies, reports stats, and more


Key changes:
* hot backup (where a node will rebind, but not attempt to auto-promote, in case we want an external source to decide on promotion)
* metrics on rebind, persistence, etc, including errors via REST
* failure on too many dangling references
* REST API can export persisted state
* copies of persisted state are made on any promotion/demotion event

This completes the persistence-related improvements I've wanted to make.

The last two have been in this PR for a few days; the first three items (in the list above) are new.  This corresponds to the final 4 commits below.
* Still getting an empty archive. If I open it with another unzip app then I get a subfolder with no name which contains the files along with another empty subfolder.

* When replacing "/" with "" then the default unzip app shows the files at top level, but when opening with the alternative app (7Zip) I still get the empty subfolder.

* Replacing "/" with getBaseDir().getName() seems to work the best - no unexpected phantom folders, works with the default Windows unzip app.