Add @Nullable annotation stuffs.

This keeps SBT from freaking out too much.
Wired up server for sending cmds to running Scaled.

We accept one command right now which is to open a file.

This also introduces an optional notion of workspace. When Scaled is started,
one can specify scaled.workspace=foo and when issuing remote commands, one can
indicate the workspace in which to open the file. If an editor window for the
specified workspace does not exist, one is created.

This is intended to support virtual desktops. The scaled command line script
determines the id of the current virtual desktop and then passes that to Scaled
to indicate that the file should be opened in the editor instance tied to that
virtual desktop. It's not as robust as if Scaled could ask the OS what virtual
desktop a window was on, but that's pipedream territory, so we'll suffice with
what we have for the foreseeable future.

Currently, on the Mac anyway, Stage.requestFocus seems to do nothing. So the
Scaled window is brought to front, but not given focus, which is fucking
annoying. Thanks to whoever is responsible for that failure. I look forward to
wasting a ton of time figuring out what is failing and how to work around it.