Refactoring to extract API
More refactoring
* Added TubesAPI class
* Added Items and Blocks class which hold both ids and references for
the items and blocks tubes has
Still more refactoring
Made the routers accessable from the API
Fixes:
 * Compressor tube now takes into account the max stack size of items
 * Compressor tube now updates when you change the target so items don't
get stuck
 * Directional tubes now pass the activate event to super classes so
coloring works on them again
 * Extraction tubes can now connect to other extraction tubes