InterpreterWindow: sort language tabs by name
Echo command to the prompt in the output window

The old interpreters echoed the command. And it is nice to see the
confirmation that indeed the system knows you pressed enter, and it is
executing stuff. Otherwise, for many commands, the prompt just clears
and there is no friendly indication that anything else happened.
InterpreterWindow: use context injection

Rather than passing a hardcoded list of services, let's declare them
using @Parameter. That way, when we inevitably need new services in the
future, we do not have to change the API contract in order to pass them
to the constructor, but can instead declare them as new instance fields.

What new services will we need? Well, the PrefService for starters,
since we'll need to persist the interpreter history and active tab
settings.
Rename Prompt -> PromptPane, for consistency

The output pane is called OutputPane, and the intepreter pane is
called InterpreterPane. Let's call the prompt pane PromptPane.
InterpreterWindow: tweak order of UI code

This will make things cleaner shortly.
InterpreterWindow: make JTabbedPane a field

This will come in handy shortly.
InterpreterWindow: persist language and histories
InterpreterPane: use MigLayout for bottom pane

This change is in preparation for adding more components to the bottom
half of the split pane -- in particular, a "Clear" button.
InterpreterPane: add a button to clear the output
InterpreterPane: narrow getComponent return type

Downstream, we will need to rely on the fact that the component is a
JSplitPane. Better to make this assumption explicit and "fail fast" if
it ever changes, rather than use casting or defensive programming
downstream which will break more subtly.
InterpreterWindow: synchronize split pane sizes

When the divider is resized for the active InterpreterPane, let's set
the dividers of all other InterpreterPanes to match, so that switching
tabs appears seamless with respect to the split panes.
Script Interpreter: let OutputPane remember and reuse writers

We do not really wrap a new writer every single time getOutputWriter()
is called, but we can reuse it. Same goes for getOutputStream().

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Script Interpreter: always close streams and writers

This fixes the bug when threads would not be released properly after an
invalid command was called by the user (blocking the JVM tear down).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Script Interpreter: wrap lines in the prompt

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Script Interpreter: handle cursor up/down with multi-line prompts properly

In case the command in the prompt box extends over multiple rows, let's
let the cursor up/down navigate inside the same command until all rows are
exhausted.

This is in line with the behavior of the now obsolete interpreter
framework of Fiji.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>