create an IPipeTransport and IPipeLogic

almost all uses of these functions are instanceof operators, so they do
not need to have complex definitions.

I also replaced uses of TileGenericPipe with IPipeTile where possible.

PacketHandlerTransport still has an explicit check against
TileGenericPipe, as I'm not sure if that will break compatability with
sub-mods.

Triggers are now based on IPipe.

Utils.checkPipeConnections now takes an IPipe and and a tile, rather
than 2 entities.

The extra functions required for things implementing the API are
trivial, but will cause a compatibility break. SheduleRenderUpdate is
used for things like iron pipes getting wrenched.

PipeWire type signal checking move to interface; that may allow other
people to interact pipe-wire signals.  ( it doesn't make much sense to
be able to check if a pipe is wired via the API, but not if the signal
is set )