Add a Sink type, fix some variance issues

Partially addresses #373 by adding a `Sink[T]` but keeping `Mappable[T]` as the typed Source.