ScriptLanguage: extend RichPlugin

This change makes every ScriptLanguage know its context, which is useful
when creating ScriptEngine instances, particularly the JavaEngine.
JavaEngine: inject context from the ScriptLanguage

This change removes the reliance on the hard coded "IJ" context.
Remove automatic SciJava context injection

This injection was a special case to provide scripts with access to the
SciJava context. But they can now easily have access to the SciJava
context simply by specifying an input parameter; e.g.:

    // @Context ijc

And this way, they can name the context variable whatever they want,
instead of it always being hardcoded to "IJ" which caused a name clash
with ImageJ1's ij.IJ class.
ScriptModule: initialize ScriptEngine before eval
BeanshellTest: wait for script execution to finish

Otherwise, in this particular case, there is a race condition where
the execution may not be finished before the JVM starts to shut down
(somehow...?). When that happens, the SaveInputsPreprocessor fails
because it invokes the Java Preferences API, which barfs.
BeanshellTest: add testParameters test

This is very similar to the one in JavaScriptTest, but for Beanshell.
Restore the ServicePreprocessor

It is still necessary in cases where service inputs are
programmatically generated, such as with ScriptModules.
ServicePreprocessor: move to imagej.module.process

This brings it in line with the rest of the module preprocessors.
The only reason it was done as a separate commit was to make git's
rename detection work properly.
ServicePreprocessor: fix javadoc
JavaScriptTest: fix failing test

The return value comes back as an Integer, not a Double. But rather than
simply change the assumed type, we instead do a string comparison to be
consistent with the testBasic tests of other scripting languages.
Use ScriptLanguage instead of ScriptEngineFactory
WIP