Null check
Access first, check for null later, Whatever.
Fix supplier logic
And logisticsmanager
things other than Providers are passive sources

(also, basic pipes don't need to add themselves to both specific and
general intrestes when default routing)
chassi should handle ISpecial
still broken: various derp fixes .. should not write/commit code at 1am.

handle module sinking matching undamaged items.
modules which care about undamaged matching should declare an interest
in the undamaged varient of an item.
if they want do declare an interest in an undamaged varient of anything
in their attached inventory, interestedInUndamagedID() returning true is
the correct way to do that.

don't filter out firewalls from the matching list.
rename validDestinations to validSources
prevent out-of-bounds exception with threading enabled.
cache the old list in a set, not a list
and save before commiting ...
don't get the list 3 times and then copy it.
firewall still broken, other stuff works.

ISpecial untested, requesting, extracting fixed.

firewall correctly routes items, but everythign ariving at it gets the
wrong direction to the next stop, because it arives at the central
router, with a destination of the edge router. need to replace
destination when it arives at the firewall.
firewall shouldn't search all nodes

also, split to a new class, removing all isItemRelayed checks from the
base class
and use the right end of the route for crafting ....
fix routing - make ExitRoute store distance to and from
Merge branch 'providerCache' into Dev
cast to ISpecial, after checking that it is ISpecial.
simplify code, handle special, sided, and interest in damaged
only check inventory every N ticks

N is 20 or 21, randomly chosen, so that everything doesn't tick at the
same time.

also, add the code base for ignoring NBT's, and for pipes to fetch the
expected cache.
Suppliers have to handle getting fuzzyMatch items