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.