core_generate_update_payload: initial commit

Takes a filesystem image and generates a update.gz that is signed by N 
provided private keys and verified against the N public keys. This is so we
can do keyrotations.
This can just go away until if/when we can support key slots in the metadata right?