Split ImageJ service framework into scijava-common

This code was migrated and adapted from ImageJ:

    https://github.com/imagej/imagej

This new shared library will enable ImageJ and SCIFIO to have a common
base for plugin extensibility.
AppUtils: remove ImageJ-specific code

Specifically, the AppUtils.getBaseDirectory() method has been replaced
with:

  AppUtils.getBaseDirectory(String sysProp,
    Class<?> c, String baseSubdirectory)

And a simplified imagej.util.AppUtils#getBaseDirectory() method calls it
with the proper arguments.
Do not declare a default type for plugins

This is important, because it is too easy to leave off the type and have
it end up categorized as a generic SciJavaPlugin, when really it should
be something else.

Previously, ImageJ used a default type of Command, but since the Command
package remained in ImageJ, it cannot be the default for all of SciJava.

It is safer to require people to always declare the type explicitly, so
that there is less chance of inadvertantly ending up with the wrong one.
Require plugin type to extend SciJavaPlugin

This was always the assumption, but was not enforced at compile time.
Plugin: add extensible key/value pair list

This makes the annotation much more extensible, so that various sorts of
plugins can register various bits of information in a freeform way.
Remove ImageJ tool-specific plugin attributes

These include alwaysActive and activeInAppFrame. ImageJ can define them
using the new key/value pair extension mechanism instead.
Plugin: tweak javadoc
Plugin: remove superfluous cancelable attribute

This attribute was intended for use with ImageJ commands, but there is
already a dedicated interface called Cancelable for signaling whether
the command can be canceled. So the attribute is unnecessary.
Merge mirror-website project with scijava-common
Update description of SciJava Common library