Refactor DiskFile init logic into multiple methods

The DiskFile constructor needs to grow a bit in the future it is was
already considered "large" by some. This breaks the logic up into
three main parts:

  1. Determine if the object exists, fetching the on-disk file(s) to
     use
  2. Finish the object construction when we have a tombstone file
  3. Finish the object construction when we have a regular data file,
     and optionally a fast-POST metadata file

We added a number of assertions as a way of documenting the expected
behavior of the loop that figures out the on-disk file to use, and a
set of unit tests to verify the loop works as expected.

Change-Id: I1503b7561e280ded3222a09514edc59ac26dbc65
Signed-off-by: Peter Portante <peter.portante@redhat.com>
Merge "Refactor DiskFile init logic into multiple methods"