jython: launch in headless mode

We only ever want to run headless ImageJ code from OMERO, so let's make
our Jython script explicitly launch Java in a way which will prevent any
potential UI deadlocks.
imagej-omero: only echo script count if successful
imagej-omero: add short descriptive header
ModuleAdapter: use better SNAPSHOT version string

If the implementation version is given as a "-SNAPSHOT" then we do not
have enough information to know the exact commit hash which built the
code in question. So in that case we append the commit hash which was
recorded in the JAR manifest explicitly, if present.
Always use image IDs, not pixels IDs

The language and code was rather inconsistent before. Modern OMERO heavily
prefers use of image IDs, since each Image can now only have one Pixels.
They are the same 99% of the time but it is good to take extra care that
we always want an image ID, not a pixels ID, in the API.
DefaultOMEROService#convert: use better var name

The name "result" was misleading, probably left over from a refactoring.
OMEROService: improve toOMERO and toImageJ javadoc
OMEROService: provide a simpler toOMERO method too

The simpler method does not have access to an omero.client, and hence
does not do image type conversion. But we often need access to the
routine for converting to basic OMERO types which do not require access
to the OMERO server at conversion time.
OMEROService#toOMERO: handle data structures

It turns out that the otherwise-convenient omero.rtypes.rtype method
does not recursively convert the elements of the POJO, but rather
expects the to already be RTypes themselves. So this change adds logic
that does perform such conversions recursively.
OMEROService#getJobParam: populate more metadata

In particular, we now populate multiple choice options, as well as
minimum and maximum parameter values.