Mode plugins

This is just plain huge, nearly a full year in the making. I'm submitting this as a pull request to make it clear what this is and why.

This incredible flurry of commits is months overdue and should have been part of the architecture from the start, and allows for "modes" to be added to RoboPaint easily as simple web applications, leaning on common API and wrappers so that an application for RoboPaint or any other supported bot could be written in an afternoon.

This means the core modes "Edit", "Print" (and the non-core "Manual") have been removed from their entrenched and spaghetti-code interiors and placed into their own islands where they can me duplicated or more easily understood as modular pieces of the whole.

This includes One new non-core experimental mode "Example", which aims to show how simply a mode can be written, including its own library for rendering text and tracing it out to the robot. This new mode, and other RoboPaint specific implementation around modes has... a lot more work to go before it is truly useful, but as use cases show up and ideas flourish, these things will definitely (and quite easily) get much better. 

The most important part about this feature merge is that it _needed_ to happen to ensure that new features don't step all over the moving code, and should be mostly invisible to end-users, at least until we can start shipping new modes, or even a mode explorer.