Initial commit
Implemented docking commands

Squashed 4 commits.
Generalizes embedded program
Generalizes embedded_controller/radio
Adds docking controllers

Squashed 10 commits:

Adds simple docking controllers

Adds docking_controllers.dm

Moves docking handshake code into its own type
Keeps docking code separate from the code for messing with airlocks and
doors.

Improves handling of invalid states

Adds docking controller to research shuttle dock

Also adds the start of a nano-ui template.

Resetting the dock controller resets the override

Adds debug verbs

Adds support for overriding docking checks

Less confusing name for the docking program
Adds a docking controller to the research shuttle

Squashes 3 commits:

Adds a controller for single door based docks

Adds a docking controller to the research shuttle

Adds override control to airlock dock nano-ui
Adds docking controllers to shuttles

Shuttles dock at round start.
Adds support for different shuttle states

Also cleans up shuttle move states a bit.
Moves shuttle_console to it's own file
Adds docking support to shuttles, NanoUI
Reworks shuttles to be more extensible

Kudos to Zuhayr for laying the groundwork for this.
Shuttles now dock on arrival and departure

Squashes 3 commits:

Shuttles now dock on arrival and departure

Adds docking controller to outpost, tweaks

Finishes off shuttle_console
Could use some cleanup, though.
Commented out the debug stuff.
Merge pull request #5182 from mwerezak/docking-controller-merged

Docking port door control
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into dev