(PDB-898) Add factset hash to replace-facts!

This commit associates a hash of each factset with the metadata of the factset
to allow us to easily tell if fact values have changed.
^^ That's not true mostly.  There's no immediate issue with making this non-nullable and there's no immediate issue with the SF migration, but I would like a sanity check on using these functions in migrations in general.