Add a version of write to TypedPipe that takes a Mappable in order to catch type errors at compile time

For things like Avro support it would be nice to catch type errors before runtime. As it is now if you pass in a PackedAvroSource[T] to write and the incoming data is not a T then you're probably going to get a runtime error. Having a write that takes Mappable[T] will catch this at compile time. This will also work for TypedTsv[T] and WritableSequenceFile[K,V], if it's made to be mappable. 
I didn't add any new tests since it's really a compile time catch but all current tests still pass. 

edit: Cleaned up unrelated comment.