The upgrade to multiaddr 7 brings with it a change that means multiaddrs with libp2p peer ID keys like `/ipfs/QmXXX` will be transformed to `/p
2p/QmXXX` when converted from a string, to a multiaddr instance and back to a string.
This is because `p2p` and `ipfs` are name aliases for the same codec. `p2p` has now become the default and older `ipfs` names do not round trip(they are converted to `p2p` - as stated above).
This change allows us to use the new multiaddr 7 lib but retain backward compatibility by ensuring the protocol specified in a string multiaddr is the protocol used in the resulting URI.
This makes multiaddrs ending with `/tcp/8080` to default to HTTP unless
an explicit assumeHttp: false is passed.
We also skip default ports for HTTP and HTTPS in the URL.
Motivation:
https://github.com/ipfs/js-ipfs/pull/2358#issue-307463029
License: MIT
Signed-off-by: Marcin Rataj <lidel@lidel.org>