Rough out finish_reingest AIP

refs #6488

Add PUT to support finished reingested AIPs, and used a modified obj_update
to call a hook before saving the object.  This hook calls finish_reingest if
it's a reingested AIP.  PATCH limited to only fields listed in
allowed_patch_fields, currently just 'reingest'.  Add rough implementation
of finish_reingest. Update bagit version to support updating manifests.
Consolidate event generation for pointer files

Move event and agent generation for pointer files to utils, and add a
wrapper function that handles everything for adding events.
Update pointer file in reingest

refs #6488

Update checksum and add another compression event after reingest.
Compression event information is stubbed out.

Squash with 'Stub out finish_reingest AIP'?
Reingest AIP: recompress based on reingested compression

refs #6498

Update reingest to parse the compression algorithm out of the reingested
pointer file and use Package.compress_package.

To handle a different compression algorithm resulting in a different
package name (eg .7z vs .tar.bz2) or the AIP being stored in a different
location, do not update the current_path or current_location in the
PackageResource.  Reingest endpoint will reset the current location & path
to match the DB, and pass in the reingest location & path, to be updated
once the package has been successfully reingested.

Squash with 'Stub out finish_reingest AIP'?
AIP Reingest: Update pointer file

refs #6498

Update pointer file for reingested AIP.  Notably: fixity checksum,
FLocat, size, and several compression related fields.  Move pointer
file changes to own function.
AIP Reingest: Delete old AIP if name changed

Delete the old AIP if the Location or path have changed (eg from different
compression).