Dashboard-side changes to start AIC creation chain

refs #5803

Added a CreateAICForm and submit button to the AIP search page that is
populated with the results information.  The results information is posted
to create_aic which creates an entry in a WatchedDirectory to start a
MicroServiceChain.  The directory is populated with files corresponding to
the AIPs that should go in the AIC - the filenames are the UUID, and the
contents are the AIP name.

Also, updated urls.py files to use url() instead of just tuples and did
minor cleanup.
Added createAICMETS client script

refs #5813

Added a client script to create the METS file for an AIC.  It collects AIP
information from files with an AIP uuid and contents of the AIP name, and
gets the AIP label by extracting the Dublin Core title from the AIP's METS
file.  Using that an the AIC's Dublin Core metadata, it creates the METS
file.

Updated archivematicaCommon/storageService.py to not rely on Django's ORM,
so all the client scripts that use it don't need to include Django's
settings file.  Added an extract file function to storageService that
fetches and saves a file from a Package (ie AIP)
Add MicroServiceChainLinks for AIC creation

refs #5823

Added preliminary MicroServiceChainLinks for AIC creation, and other
necessary client scripts.  Currently does not allow for metadata entry.
Updated createAICMETS for new paths.
Added metadata entry for AICs

refs #5823

Create AIC redirects to metadata entry page.  Added new form for Dublin
Core metadata for AIC that doesn't have Part of AIC, potential for more
divergent behaviour.  MicroServiceChainLink is started once metadata is
saved.  Cleaned up Dublin Core forms to be a ModelForm.
ElasticSearch doesn't index processingMCP.xml

refs #5803

Put a filter in ElasticSearch functions to prevent processingMCP.xml from
being indexed.  Other paths use the METS file to find the files to index,
but the AIC METS file is in metadata/ not /.

Removed unused code, cleaned up imports, fixed removing tmp directories on
DB recreate.
Fixed problems with AIC MicroServiceChainLinks

refs #5823

Added create METS.xml script to AIC chain.  Fixed createMETS file to not
bail if objects/metadata/transfers does not exist.

Updated bagit script to check that all the payload files/folders existed.
Added metadata/ folder to the bagit payload so the AIC METS file is
included.  Cleaned up bagit script.
Added isPartOf to METS file

refs #5803

Renamed Part of AIP to be isPartOf, like Dublin Core name.  Updated Dublin
Core metadata section in create METS.  ElasticSearch should index all
the fields in the METS file, including the new isPartOf.
Updated pointer file, storeAIP, and metadata entry for AIC

refs #5803

SIPs now store a sipType, which is "SIP" by default but is "AIC" for AICs.
AIP Pointer File stores the correct package type, pulled from the Dublin
Core metadata.  Store AIP sends package type of AIC when sipType is AIC.
Removed dependency on Django for store AIP.  The metadata entry form shows
the AIC form if the sipType is AIC, and the default DublinCore form
otherwise.

Also, fixed bug in dublin core METS creation.
AIC METS file named with file UUID

refs #5803

Both the 'normal' METS file and the AIC-specific METS file were named the
same - METS.<AIP UUID>.xml.  The AIC-specific METS file in the metadata/
folder is the contents of the AIP, so it is now named with the file UUID
instead of the AIP UUID.
Fixed METS file for AICs

refs #5883

Added metadata/ to the createMETS2 script, and added a check if the
directory exists before adding it to the structmap.  Also created a new
StandardTasksConfig for creating METS for an AIC that doesn't include the
amdSec.  Added the AIC METS file to Derivations, so it would work with
createMETS2.

Converted createAICMETS and createPointerFile to use
archivematicaXMLNamesSpace.  Renamed dctermsNS to dcNS, and removed unused
dcNS.
Enable searching of AIPs by isPartOf

refs #5898

Added isPartOf and AICID to fields specially indexed for 'aips' and
'aipfiles'.  Parse the data to populate those fields out of the METS file.
Added options to drop-down menu to search by those fields.

Converted some functions to use namespaces in xml searches.
AIC identifiers and isPartOf have AIC# prepended

refs #5803

Updated the metadata forms for AICs and AIPs to prepend 'AIC# ' where
needed.  Since DublinCore metadata in createAICMETS uses the createMETS2
function, removed get_aic_info from createAICMETS.  Updated display text
for searching on isPartOf.
Index AIC METS file

refs #5898

When indexing an AIP/AIC, index files fileGrp USE='metadata' in addition to
'original'.  Since metadata files never have an amdSec, parse the UUID from
the file ID.
Updated comment on how ElasticSearch searches
Code cleanup and minor bug fixes

refs #5803

Fixed bugs if no DublinCore metadata entered.  Merged 'original' and
'metadata' file indexing.  Removed space after AIC# in isPartOf and
identifier.
Dashboard-side changes to start AIC creation chain

refs #5803

Added a CreateAICForm and submit button to the AIP search page that is
populated with the results information.  The results information is posted
to create_aic which creates an entry in a WatchedDirectory to start a
MicroServiceChain.  The directory is populated with files corresponding to
the AIPs that should go in the AIC - the filenames are the UUID, and the
contents are the AIP name.

Also, updated urls.py files to use url() instead of just tuples and did
minor cleanup.
New show AIC checkbox and AIC identifier column in Archival Storage

refs #5898

Added 'Show AIC?' checkbox to Archival Storage search that displays a
column with the AIC identitfier (if AIC) or isPartOf field (if AIP).
Updated query parameter for file mode. Removed defunct StorageSearchForm.
Added %SIPType% to SIP unit

SIP type was added to the database, but not available as a replacement
value.  Added it to the unitSIP replacementDic, and updated script that
used it.
Add count of AIPs in AIC to ES and Archival Storage display

refs #5898

Want to be able to display the number of AIPs semantically included in an
AIC.  To do this, we index the number of AIPs in the AIC METS file into
ElasticSearch, and store that in the AIC METS file.

When creating the AIC METS file, we save the number of AIPS in a
UnitVariable for that AIC, and in the extent Dublin Core tag.  IndexAIP
looks for this variable if the SIP type is AIC and optionally passes it to
ElasticSearch, where it is retrieved by the Archival Storage tab.