3706: Silence fallback-to-keep warning, show both errors (API and Keep) if both fail.
3706: In CollectionReader, try fetching manifests before/after API
server when the ID is a Keep locator with/without a permission hint
respectively. Do not display a warning if the manifest is found one
way or the other.
3706: Do not leave zero-length file segment at end of stream after finish_current_file().
3706: Consolidate more regular expressions into util package.
3706: Remove automatic normalization. Add --normalize option to
arv-put. Add normalize() and stripped_manifest() methods to
CollectionReader. Clean up normalize code.
3706: Merge branch 'master' into 3706-keep-warning
3706: Use normalize() in arv-mount.
3706: Catch and return exceptions in _populate_* methods to dry up _populate()
3706: normalize() returns None instead of self. Add equally convenient, and more Pythonic, manifest_text(normalize=True) feature.
3706: Put --normalize and --max-manifest-depth arguments in a mutually_exclusive_group.
3706: Really make the API server return the wrong data, instead of just saying so.
3706: Two blank lines after class definition.
3706: Prefer "if x" to "if len(x) > 0".
3706: Prefer join() to many string concatenations.
3706: Clarify test case.
3706: Process directory trees in sorted() order, instead of the order
returned by os.listdir().

This causes write_directory_tree() to produce a manifest that is
normalized to the greatest extent possible for the given
max_manifest_depth.
3706: Mutating normalize() does not return self.
3706: Prefer "is None" and "is not None" to "== None" and "!= None".
3706: Add back "collections.get => 404" to "fallback to Keep" test.
3706: Remove superfluous conditional.