Object deleted while updating behavior changes

When a manifest is deleted directly by a user and not overwritten to
enter the pending delete_state, it is marked as ```{deleted, true}```
inside #MANIFEST.props. When an uploading manifest completes, the
writing manifest will become the most recent active manifest.

When a user goes to read the key, the following occurs:
  * If there is an existing manifest in the pending_delete or
    scheduled_delete state with {deleted, true} in props, and the
    delete_marked_time of that manifest is greater than the
    write_start_time of the most recent active manifest, then not_found
    is returned.
  * If there is no existing manifest with {deleted, true} in props,
    then the most recent active manifest is returned.
  * If there is an existing manifest with {deleted, true} in props,
    but the delete_marked_time is less than the write_start_time of
    the most recent active manifest, then the most recent active
    manifest is returned.

Do not show active manifests on read time if a delete occurred after writing started #533

fix riak_cs_manifest_utils:most_recent_active_manifest/2

gc active manifests that were in writing state when a deletion occured
and have since completed. #533

return a list of UUIDs not Manifests from riak_cs_manifest_utils:find_deleted_active_manifests/2

quickcheck property for the active manifest

add type specs and fix a bug in the active manifest handling found by quickcheck

fix spec with hint from dialyzer

fix dialyzer error

remove accidental .swp checkin

use a guard instead of case statement and shorten some clauses
Merge pull request #561 from basho/feature/mark_deleted_with_read_check2

Object deleted while updating behavior changes