Add transport documentation and how to write custom transports