ClassUtils: add getLeafInterface methods

Added a getLeafInterfaces and getLeafInterfacesOfType method to
ClassUtils.

These methods scan an array of classes and build a list of all
interfaces implemented by those classes, that are not further
subclassed.

For example, if Foo.class on the class list implements IfaceA and
IfaceB, Bar.class on the class list implements IfaceC, and IfaceC
extends IfaceB, then these methods would return IfaceA and IfaceC,
because IfaceB was not a leaf interface.

The "..OfType" signature allows the specification of an upper bound on
the returned interface types. For example, type == Service.class, only
leaf interfaces that extend Service.class will be returned.
ServiceHelper: load all leaves when given an iface

The loadClasses method, when loading its list of service classes, will
now load interfaces and implementations differently.

Implementations can be loaded directly (unchanged behavior).

For a given interface, a list of all known leaf interfaces extending the
provided interface will be constructed, and each discovered leaf
interface will be loaded. This allows consuming software to define its
own marker interfaces for services, and contexts created with these
marker interfaces to load all extending types dynamically discovered at
runtime.
Added ScijavaService

Created a ScijavaService class and updated all scijava-common services
to extend it.

This allows for granular selection of all scijava-common services during
Context creation, without necessitating an explicit list.

Updated Context creation unit tests as appropriate.