Major custom recipe system overhaul
Now supports the possibility of custom recipes with multiple ingredients and multiple results (including chances for supplementary results).
ShapelessCustomRecipe and ShapedCustomRecipe are not actually used (or tested) yet.
If an item can't be ejected from a machine, throttle ejection rate back.
Throttle back from once/tick to once/second; reduces CPU usage when repeatedly trying to eject an unejectable item.
Added /stb examine command, useful for debugging mainly
Label sign improvements
- Breaking a block with label signs now makes the signs disappear along with the block; replacing the block will auto-place the signs, if possible (or drop them if not)
- Machines (subclasses of STBMachine) now show a pretty SCU meter on the 4th line of the label sign

Also:
- playStartupSound() is now called onMachineStartup()
- Changed the Heat Engine particle effect
Significant internal reworking & streamlining

- Serialization of STB blocks is now done just before they're sent to the DB updater thread, not every time the update() method is called.
- Split block place event handler into two handler: pre-place handler to check everything's OK, and a will-place handler (priority MONITOR) to actually register the placed block.

BaseSTBBlock#updateBlock() is now BaseSTBBlock#update()

BSU/HSU item labels now behave better.  Also eliminated an unnecessary call to update() when a stored BSU/HSU is deserialized.

Ensure update() is called appropriately when items are moved in and out various machine GUIs.
Inventory event handler tidyup
Item Router tidy-up
Now serializes the modules as an inventory.  ItemRouterModule no longer needs to track the amount of modules itself, meaning modules stack sensibly now.
GUI colour scheme has been changed.
Textures are now configurable via /stb set gui.texture...
Recipe book: fix problem where ingredient item data could be 32767
And thus fail to find a recipe in the book's list.
STBInventoryHolder changes
showOutput() and updateOutput() now take a UUID
Various implementations now respect STB block access setting for these methods
EnderStorageHolder now implements STBInventoryHolder
- meaning advanced recipe book now works correctly with ender boxes