topcat: fix regression bug (auth failure) in JDBC load dialogue

When I added the TAP load dialogue to the ControlWindow toolbar
just before release of TOPCAT v4.2 (4289ffb4), I inadvertently
introduced a bug which meant that the SQL load dialogue doesn't
work any more - authentication fails.  I haven't tracked down
exactly why this happens, but it's related to the fact that
the LoadWindow was being instantiated during ControlWindow
construction (before that change it was not done until the user
hit the Load button).

Modified ControlWindow so that LoadWindow is not constructed
until it's needed, which fixes that bug.  It's possible there
were other unnoticed negative consequences of the earlier change;
this update may fix those too.

Both the problem and the fix are fairly inelegant, because application
startup in topcat (implemented in the very old classes Driver,
ControlWindow, LoadWindow) is messy and badly designed.
Added a note in ControlWindow to this effect.
util: add generics to ObjectFactory

ObjectFactory is naturally parameterised by the type of the objects
it is creating.
task: use generics properly to avoid unchecked warnings

Parameterise access to collections classes.
task: redefine Parameter with generics

The Parameter class is now, ahem, parameterised with a type <T> giving
the class of the values it obtains.  This is generally sensible,
and allows various automations based on the parameter type which were
not possible before.  Runtime pluggability can be much improved:
string values can now as a matter of course (but optionally)
be classnames of classes with the right superclass and no-arg
constructors.  It also allows an Environment to accept
typed values as an alternative to string values.

At the same time, rework the way the Parameter class was written.
It was pretty nasty, making subclassing error-prone and unpleasant.
Now you usually just have to implement an abstract method
stringToObject.

Parameter is now an abstract superclass, with StringParameter replacing
it if the value you want is a String.

Since the TASK API has changed, code in TTOOLS and (the moribund)
NDTOOLS packages also needs to be changed.  NDTOOLS builds and
should be OK, but I haven't tested it.  There ought not to be
user-visible changes to TTOOLS, and the unit tests are fairly
extensive, but quite a bit of code has changed so nasty surprises
are possible.  In particular null parameter values are handled
slightly differently, so watch out for new NullPointerExceptions.
task: rationalise default value setting in Parameter

The setDefault and getDefault methods are now named setStringDefault
and getStringDefault.  A few type-specific default setter methods
have been added to some of the parameter subclasses.
This is less confusing, more extensible, and easier to use.