Add support for generating keys
Calculate cost uniquely for each primitive

Different primitives take different amounts of time, so we should
support calibrating each primitive to a number of rounds specific to
itself.
Use Sodium constant API, instead of direct constant lookup