Implement the following commands from the I2P SAM protocol:
* HELLO: needed for all of the remaining ones
* DEST GENERATE: to generate our private key and destination
* NAMING LOOKUP: to convert .i2p addresses to destinations
* SESSION CREATE: needed for STREAM CONNECT and STREAM ACCEPT
* STREAM CONNECT: to make outgoing connections
* STREAM ACCEPT: to accept incoming connections
Notes:
- because of out of sequence backports, I had to apply a change from [[https://github.com/bitcoin/bitcoin/pull/22937 | core#22937]] to i2p.cpp (line 323) to explicitely convert a `fs::path` to a string.
This is a backport of [[https://github.com/bitcoin/bitcoin/pull/20685 | core#20685]] [14/20]
https://github.com/bitcoin/bitcoin/pull/20685/commits/c22daa2ecff1acd25426cd46f98f2587d1d324c3
Notes:
- because of out of sequence backports, I had to apply a change from [[https://github.com/bitcoin/bitcoin/pull/22937 | core#22937]] to i2p.cpp (line 323) to explicitely convert a `fs::path` to a string.Depends on D11024