DefaultMenuService: load root menus lazily

This improves the service's initialization time substantially, by
deferring construction of the root menus until they are actually needed.
DefaultThresholdService: initialize lazily

This improves the service's initialization time by deferring
construction of data structures until they are actually needed.
AbstractSingletonService: create instances lazily

There is no need to create them during service initialization; for
performance, we can create them on demand when they are actually needed.
DefaultAutoscaleService: initialize lazily

This improves the service's initialization time by deferring
construction of data structures until they are actually needed.
DefaultCalculatorService: initialize lazily

This improves the service's initialization time by deferring
construction of data structures until they are actually needed.
DefaultUploaderService: initialize lazily

This improves the service's initialization time by deferring
construction of data structures until they are actually needed.
JHotDrawService: initialize lazily

This improves the service's initialization time by deferring
construction of data structures until they are actually needed.
Merge branch 'startup-speed'

This branch updates a few services to defer their startup logic from
service initialization to later on, when it is actually needed.
The hope is that this change improves ImageJ's initial startup time in
some cases, depending on exactly which services are needed.
DefaultDatasetService: fix visibility problem

This problem was introduced with horrible hack
b255ae47caf3d42d85b56e5735df798f2350e239. An exception is thrown because
the modifier of the inner class is private rather than protected, and so
it cannot be instantiated via reflection. This change fixes the issue.