contraMap and andThen on TypedSink/TypedSource

closes #884 
closes #885 
I think the name `butFirst` has better symmetry with `andThen`