Returns a new Codec of type B given isomorphic functions of A to B and B to A
Returns a new Codec for the specified type given an Encoder and a Decoder in scope for the type.