Support for 6d facedir, vertical placement, and connect_sides

This is a pretty large one; here's what these changes aim to do:
* make every component honor the 6d facedir system (screwdrivers will no longer disable deployers, cause node breakers to eat themselves, or impede tube routing)
* allow one to place deployers and node breakers facing +/- y by standing above or below the placement location
* generalize tube routing by giving nodes a connect_sides table they can specify in their tube table that contains definitions for the sides that a tube may connect to; keys include "left", "right", "front", "back", "top", and "bottom", and for a tube to connect to the side, the side must be defined and not nil/false

Some utility functions that I have submitted for consideration for inclusion in the API are included in some files that use them; if/when https://github.com/minetest/minetest/pull/834 is pulled, those can be changed to their standardized equivalents.

Because this commit will ignore any nodes in tube routing without connect_sides defined, it probably shouldn't be merged until the technic components have that defined as well, as it will break their tube routing otherwise.