i2pd-sys 0.0.5

Raw FFI bindings to a minimal C shim over libi2pd (PurpleI2P/i2pd).
Documentation
Gate transit tunnel participation behind I2PD_SYS_NO_TRANSIT.

Both hunks sit in the else branch of a "is this build reply for one of our own pending
tunnels?" test, so they are reached only for build requests belonging to third parties.
Dropping the message there means no foreign build record is decrypted and no transit tunnel
state is ever created, while this router's own inbound and outbound tunnels -- and therefore
any destination it hosts -- are untouched.

Defined by build.rs when the crate's default `transit` feature is off. The feature is on by
default: a router that relays nothing offers an observer no cover traffic and is itself
distinguishable. See i2pd_accepts_transit() in shim/shim.h.

diff --git a/libi2pd/Tunnel.cpp b/libi2pd/Tunnel.cpp
index 73b4b11..a27ba6b 100644
--- a/libi2pd/Tunnel.cpp
+++ b/libi2pd/Tunnel.cpp
@@ -747,7 +747,13 @@ namespace tunnel
 			return;
 		}
 		else
+#ifdef I2PD_SYS_NO_TRANSIT
+			// i2pd-sys: built without the `transit` feature. Dropped here, before any of the
+			// build records are decrypted, so no third-party tunnel state is ever created.
+			LogPrint (eLogDebug, "Tunnel: transit disabled at build time, dropping build request");
+#else
 			m_TransitTunnels.PostTransitTunnelBuildMsg (std::move (msg));
+#endif
 	}
 
 	void Tunnels::HandleVariableTunnelBuildMsg (std::shared_ptr<I2NPMessage> msg)
@@ -770,7 +776,13 @@ namespace tunnel
 			}
 		}
 		else
+#ifdef I2PD_SYS_NO_TRANSIT
+			// i2pd-sys: built without the `transit` feature. Dropped here, before any of the
+			// build records are decrypted, so no third-party tunnel state is ever created.
+			LogPrint (eLogDebug, "Tunnel: transit disabled at build time, dropping build request");
+#else
 			m_TransitTunnels.PostTransitTunnelBuildMsg (std::move (msg));
+#endif
 	}
 
 	void Tunnels::HandleTunnelBuildReplyMsg (std::shared_ptr<I2NPMessage> msg, bool isShort)