(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.
This reflects a serious issue that I hadn't thought of.  We can't be using add-facts!, replace-facts!, etc in any migrations because those functions can change with updates, and if an update adds a non-nullable column then the previous migration will fail. The structured facts migration will need to be changed before we can make this column non-nullable.