Remove three classes from the public API

CodeHacker, LegacyExtensions and LegacyHeadless are really only meant
for consumption by ij1-patcher internally.

So let's reduce the maintenance burden.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Make LegacyHooks an abstract class

The former idea of making LegacyHooks an interface was well-intentioned
and modeled after the lessons taught by scijava-common.

However, LegacyHooks cannot be duck-typed as scijava-common services can
be, because -- by design -- there is only one LegacyHooks instance
injected into ij.IJ.

So let's play things safe and make it an abstract base class. By
carefully adding only extension points with dummy implementations, we
will ensure forward-compatibility: Even classes compiled against earlier
versions of LegacyHooks will work with newer versions.

Suggested by Curtis Rueden.

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