Extraction: make extraction optional

Refs #5894
Extract: add option to delete original package

This was previously hardcoded; this moves the option to the UI, allowing
users to choose.

In a future commit this will be set by default in the administrative
settings.

Refs #5894.
main.models: add model for UnitVariable
ReplacementDict: add .fromstring static method

This takes care of parsing a string into Python literals, so that
consumers can just pass in a string and don't have to worry about
dealing directly with evaluating Python code.
Migrate certain unit variables to passVars in new chains

Certain chains need to be able to inherit passVars set in previous
chains. An example of this is identification, where a second pass of
identification happens after extraction during the transfer; the
previous choice made needs to be able to apply.

Unit variables with the variable name 'replacementDict' will now have
their values included into passVars at the creation of every subsequent
chain in the unit.