PluginInfo: implement more interfaces

All plugins are Identifiable, Locatable and Versioned, since they
correspond to a Java class which we can track down in those fashions.
CommandInfo: remove now-superfluous code

The PluginInfo base class now implements the Locatable#getLocation() and
Versioned#getVersion() methods in the identical way, so CommandInfo no
longer needs to implement them itself. Note that it _does_ still need to
implement the Identifiable#getIdentifier() method, because the
identifier of commands is different than that of plugins in general.
PluginInfo: fall back to @Plugin class annotation

Normally, plugins are discovered by scanning the SJC annotation index,
present in the resource META-INF/json/org.scijava.plugin.Plugin.

However, PluginInfo objects can also be created explicitly and added
directly to a PluginIndex. This is especially useful for unit tests.
When this happens, the PluginInfo(String, Class) constructor passed a
null Plugin annotation, resulting in no plugin metadata at all. It is
much better for the code path through that constructor to scrap the
given Class for its associated Plugin annotation, if any.