Add an interface for optional components

This interface is only meant as a marker so that the context can
discern between fatal errors and expected ones, e.g. when services
are initialized.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Report non-optional services' failing to initialize

This hopefully addresses the issue that some services should not clutter
the log when failing to initialize (such as SCIFIO's LuraWaveService),
but other services should not fail silently, such as ImageJ2's
LUTService or LegacyService.

From now on, we can mark the former category of services with the
Optional interface and still have helpful information from the log in
case essential services were not initialized (and therefore not added
to the set of available services).

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>