Add combinator that allows validation of data being encoded or decoded

Variant of xmap, where f and g use \/ to report error if argument is unacceptable. 

Makes it easy to create new encoders that include validation of the data.