DefaultOpMatchingService: tweak style
DefaultOpMatchingService: handle optional params

This change provides a better matching of argument templates to ops with
optional parameters, by allowing any or all of the optional parameter
values to be left out of the argument list. This works by padding the
argument list with nulls for the optional parameters from right to left.

Thanks to Johannes Schindelin for pointing out that a complicated
implementation enumerating all combinations is not needed here. :-)
OpMatchingService: improve findModule javadoc
OpService: improve module javadoc
AbstractOpTest: tweak javadoc
AbstractOpTest: populate services via injection
AbstractOpTest: provide access to extra services

Subclasses can now override the createContext() method to make a context
that includes additional services, in case they are needed for tests.
AbstractOpTest: also include the OpMatchingService
AbstractOpTest: add myself as an author
OpServiceTest: fix javadoc link
OpServiceTest: make InfinityOp an in-place op
Add unit tests for the OpMatchingService
OpMatchingServiceTest: test optional params
Remove empty @params
Remove unnecessary modifiers

Interface constants are always "public static final"
Clean up base interfaces

They now all follow exactly the same template.
InplaceJoin: remove redundant iface declaration
DefaultLookup: use Lookup constants
DefaultProjector: use Projector NAME constant
DefaultProjectorP: use Projector NAME constant