Module framework: reduce input/output dichotomy

There was a lot of repeated code for inputs and outputs, which has now
been reduced where applicable. For example, "addInput(ModuleItem)" and
"addOutput(ModuleItem)" is now simply "addItem(ModuleItem)".

Further, the Module interface now extends Map<String, Object>, which
standardizes the getting and setting of module item values.

This change also fixes a couple of bugs:
  * DefaultModule#addOutput(String, Class<?>) neglected to set the newly
    created DefaultModuleItem's I/O type to ItemIO.OUTPUT.
  * DynamicCommand#getOutput(String) erroneously delegated to
    super.getInput(String) in the case of a non-annotated module item.

Both of the above issues are now moot due to the refactoring.
WIP: Initial version of script engine for R

It uses the Rserve library for interprocess communication between
Java and R.

Here is an example annotated R script:

  # @Parameter(name = label, type = string)
  # @Parameter(name = version, type = string, output = true)
  version = paste("[", label, "] ", R.version.string, sep = "")

Outstanding issues:

  * Deploy Rserve JARs to ImageJ Maven repository
  * Fix bug where DisplayPostprocessor thinks output is null
  * Support multiple output values
  * Compare this Rserve-based solution to one using rJava
  * Eliminate FIXME blocks
    - Reduce redundancy of "bindings" code across scripting languages
    - Implement get/set variable methods properly for R
  * Add support for Dataset, DatasetView, ImageDisplay