Eliminate threshold options from ThresholdService

The threshold classes now try to use sensible defaults or behave like IJ1. The default range
values of a ThresholdOverlay could be improved.
Document some TODOs
Fix bug in threshold range initialization
Work towards ThresholdOverlay handling dataset rebuilds

ThresholdOverlays are now designed to update if an underlying Dataset goes through a large change
(such as someone calling dataset.setImgplus()). Note however that this code is not yet testing as
correct.
Update some documentation notes
Simplify the declarations of min/max parameter fields
Make sure that threshold overlay graphics are always up to date
MethodRef: tweak style
Migrate item init calls into Module#initialize

This simplifies the InitPreprocessor to a single Module#initialize call.
Use checked exceptions for reflective method calls

In particular, the initialize() and callback() methods in the module
framework really benefit from the new checked exception,
MethodCallException.

It is now the responsibility of downstream code to handle this
exception. Previously, it was (too) easy to ignore when the reflective
method execution failed, which resulted in some exceptions getting eaten
further down the chain. For example, a NumberWidget for a double input
parameter with a scroll bar or slider widget style does not work, but
the exception indicating so was previously silently ignored.
Merge remote-tracking branch 'github/ij-launcher'

This teaches the ImageJ launcher to launch plain ImageJ 1.x, too.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Documentation changes
Continue making ThresholdOverlay flexibly handle dataset.setImgPlus()

Also moved functionality into Imglib where appropriate. This commit relies on Imglib
commits:
b9fdf9cfcc2f2249e0e9cb4e971f4054c6b3c497 and 626b71419ce02b6b8ff401e3edfe7ead314507b0
Launcher: add the '--set-icon' command for Windows

On Windows, the icon of .exe files can be set by updating the resources
included in the .exe file using functions of the Win32 API.

Since it is so hard to get by easy-to-run programs to do that from
scripts, and since we want to be able to rebrand the ImageJ launcher
easily both for Fiji and for ImageJ 1.x, we simply add a subcommand of
the launcher that can set the icon (but this only works on Windows, as
it requires Win32 API calls).

Therefore this option is meant primarily to be run by Jenkins on a
Windows node to copy-edit the launcher for Fiji and ImageJ 1.x.

Unfortunately, there seems to be no error message when trying to update
the icon of the running program, even if the icon is not updated. Caveat
emptor.

This commit adds a BSD-licensed reimplementation of a small part of the
code of WinRun4J. It was written from scratch after learning from
WinRun4J's source code, the MSDN documentation and reverse engineering
the output of windres.exe.

However, it is this software developer's conviction that -- modulo
naming -- there is only one way to implement this functionality, so it
is not copyright'able at all.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Fix initialization error by assigning a default value to a field
Make sure crop maintains ThresholdOverlay
Update documentation notes
Change how default naming is handled in ThresholdOverlay

Note that now a thresh overlay maintains a default name at all times. Users can override
the default name via setName(). If they setName(null) the default name will reappear.
This fixes minor issues apparent in overlay manager.
Emit OverlayUpdatedEvents when threshold range changed
Make sure dark background toggle changes dialog field values