UNTESTED DEV!

use a treeSet to effiently merge provider/crafter list and avoid *lots*
of recurstion.
this leads to having to pass around collections, because a list is not a
set, and inventories (which can have duplicates) need a list.

many places hashMaps were incorrectly used; don't double get, iterate
them and get the key/value as needed.

added some sorting classes to ItemIdentifierStack, incase a
quicksort/match is needed.

major simplification in requestHandler, by using a set not a list.
ISC simplified, no need to search, adding a repeat to a set is not an
error.

start of code for provide/supply/global interest caching, so that
requestManager becomes a trivial exercise.

Routing is broken; pipes continually green spark, somewhere i've done a
typo.