ReplacementDict: add constructor from DB data

This new constructor allows a ReplacementDict to be constructed by
passing in rows from the database. This allows places outside of the
Unit classes to gain access to the full suite of standard unit
variables without having to fully reimplement the logic.

Eventually the three Unit classes can probably be migrated to use this
constructor, ensuring that there's only one canonical way to produce
this style of ReplacementDict.

refs #6451
Move characterization to FPR rules
Characterization: add default commands

One or more default normalization commands can be defined, by defining
FPRules with the purpose 'default_characterization'. As with
normalization, these will be called if no matching FPRules can be found.
This also allows for characterization rules to be applied to files that
couldn't be identified.

FITS will be the default characterization command in 1.1; others can
be introduced, or customized by users.
Characterization: add fiwalk plugins
createMETS2: correct FPCommandOutput purposes
createMETS2: fix FPCommandOutput with encoding declarations
FPCommandOutput: use combo of file and rule UUIDs for pk

Previously only one output per FPCommand was allowed, whereas we want
to accept one per file/command combination.
characterizeFile: support all unit variables