Refactor on-disk knowledge out of object server

Refactor on-disk knowledge out of the object server by pushing the
async update pickle creation to the new DiskFileManager class (name is
not the best, so suggestions welcome), along with the REPLICATOR
method logic. We also move the mount checking and thread pool storage
to the new ondisk.Devices object, which then also becomes the new home
of the audit_location_generator method.

For the object server, a new setup() method is now called at the end
of the controller's construction, and the _diskfile() method has been
renamed to get_diskfile(), to allow implementation specific behavior.

Change-Id: Id945276037dbbeb8a778753e47a7316cd408eac7
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Use new ondisk.Devices where possible

We also remove the unused mount_check attribute from the recon
middleware.

Change-Id: Icc593fd548a6e2d9bc5c8178f78424b1d6473f05
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Add an __str__ method to brokers

This was a part of the unfortunate review #28009 that floundered
upon adding an is_good() method. However, I think the part about
making brokers indentifiable has a merit. Alternative back-end
implementations may supply something other than a filename here,
for example a cluster name and a volume name.

Note that I'm not sure if correct coercion would occur when
brokers are bounced through dictionaries, hence explicit str().
This could be rectified.

Change-Id: I329788ebd1fbe39ffadcf9f9d5194a74a88dde58
Remove thorny os.path.exists(broker.db_file)

This was known as "clean up the initialise method" (in order to
get rid of db_file), but unfortunately this requires redoing
the deleting of account and container entities as well, because
just one os.path.exists() was in an unlucky place. This opens
a small can of worms.

Doubly unfortunately, however, is that this patch badly conflicts
with the loader ("get_backend()"). This is because we are adding
exceptions and there's no way to load them alongside the back-end
broker class. There isn't one, right? So, we're likely to change
this bunch of new exceptions to the hated returned error codes.

Exceptions are a small detail, however. The meat of the patch
remains and is quite hazardous in respect to regressions. This
needs a very careful review.

Change-Id: I54d54eb8984d6bca4be912e7451f82e11b2db6ca
Drop knowledge of db from node servers

Since the draft of this patch was posted, a promising approach
was suggested by ondisk.py. It allows us to not to attempt to
shoehorn the use of replicators and auditors into the broker API
which knows of no databases. Accordingly, this version is more
aggressive and not only gets rid of ".db" suffix, but the
whole hash and path calculations in servers.

Change-Id: I79a8c7bb82a20554080be06b211a8e06edc51c6d