Instead of building a libp2p `Transport` via a chain of `and_then`, leverage the `libp2p::core::upgrade::Builder` pattern for authentication and multiplexing.