add Codec.emap

allows validation of data passing through codec
adjust per the review feedback
Merge pull request #20 from searler/either_branch

Add combinator that allows validation of data being encoded or decoded