[dm-era] era_destroy(): check for a NULL metadata object before destroying it
[dm-era] validate the block size
[dm-era] Use a completion structure when passing work to the worker thread.

My roll-your-own version wasn't performing any memory barriers.
[dm-era, persistent-data] Remove any assumptions about the alignment of the space map root buffer.

dm-era doesn't put this buffer on a 64bit boundary.  It's better to be
defensive and handle this case in the persistent-data lib.
[dm-era] Change the archived_writesets var from an atomic_t to a bool.

It's only ever accessed from the worker thread, so no reason for it to
be atomic.
[dm-era] Destroy the space map and transaction manager on a couple of error paths.
[dm-era] add check for max nr_blocks
[dm-era] Fix some synchronisation bugs in the status method

Reading the 64 bit values would not have been atomic on 32 bit
machines.

Instead all the info needed is retrieved by a rpc call to the worker.
[dm-era] Change md->current_era from an atomic64_t to a uint32_t

current_era is no longer accessed by multiple threads.
[dm-era] Drop the irq spin locks for deferred_lock

It's never called from irq context.
[dm-era] Fast track REQ_FLUSH bios

We're not interested since they carry no data.