ServiceHelper: change LogService check

In the loadServices method, instead of checking if a service ==
LogService.class, checks if LogService.class isAssignableFrom. This is a
much more flexible check, given that LogService.class may not explicitly
be on the ServiceClass list.
ServiceHelper: allow multiple service loadings

For each class in its provided Service list, the ServiceHelper will now
scan its class pool looking for implementations.

This should allow consuming software to do things like create a single
top-level service that all plugin services extend. By creating a Context
with the top-level service specified, all concrete implementations of
the service subclasses will be loaded.
Context: document caution when creating Context

Added a note to the Context constructor referencing the potential
performance pitfalls involving services with multiple implementations in
the provided class pool.
Context: change default services to Service.class

If no classlist is provided, Contexts will now default to passing
"Service.class". This will cause all services discovered by the
associated PluginIndex to be loaded.
Context: add PluginIndex constructor

Added a constructor that just takes a PluginIndex and uses the default
Service list.
PluginIndex: allow null PluginFinder

The PluginFinder of a PluginIndex can now be null. If null, no plugins
will be discovered during the discover() method call.
Add SciJavaService interface

Added a top-level SciJavaService interface, that all other
scijava-common services extend.

This allows Contexts to be created with just the SciJavaService, and
have all service subclasses discovered automatically.
ContextCreationTest: add new tests

Added test coverage for the new API added to Context and ServiceHelper.