chg: move CustomSerializer into Engine

this allows us to make the CryptoEngine agnostic to the stored
data -- this should allow easy improvements for the metadata service