Make addRequirement properly combine stacks, simplify checkCrafting, fixes #535
Add sendmode to passive itemsender
Make mk3 extractors, mk2 provider and qsort use fast mode
prevAdjacentRouter only stores the routers removed.

prevAdjacentRouter is never null
prevAdjacentRouter is never reset, so multiple acts() can be running at
once in different threads.

the solution for mutiple acts running at once is to have a sperate
thread for each act() type, or to accept overlapping actions.

assert: _adjacent, _adjacentRouter, _prevAdjacentRouter are never added
to or removed from, so no concurrent modifications occur while they are
iterated over.
Replacing them is fine, as the iteration will finish on the old list,
and whatever caused the replacement will trigger it's own update later.
damaged items prevent requests of new undamaged ones.

when checking to see if a request is needed, damage values are igored
for damageable items.
when requesting items, only an exact match works.
1 damaged item can't satisfy a request for 2 other damage values.
Use getRoutersInterestedIn in assignDestinationFor
Crafters can now be used to fill part of a request
Just use the partial tree to do partial requests
Reuse generateRequestTree and recurse to fill out failed instead of duplicating generateRequestTree and checkCrafting
Use partial requests for rerequesting lost items
Also use it for liquid and builder supplier partial requests
Extend "Supplier failed" trigger to builder and liquid supplier pipes
Don't build missing branches if log is null
If a sat gets materials, don't check distance to sources from the crafting pipe
And suddenly requester is always treeNode.target
we don't use validDestinations here anymore
Don't keep checking providers after we're done
Multiple providers in one chassi still misbehave, but at least they won't crash servers.
add a low-lag get_by_id

because the isClient check is slow, and some classes only exist server
side, so know which side they are on.
and use the unsafe get

assuming the code will only be used server side.
quickset for when the manual lock is alrady set

and you don't mind a very small chance that the thread won't release.
also, do more inventory udpates per tick; noticed a bit of pipe HUD lag
on the send queue.