Refactor op matching to ease future debugging

The OperationMatcher is simpler now, only returning whether it can match
a particular ModuleInfo to a given list of arguments. The name and type
filtering is now done in the DefaultOpService itself, so that if there
are no matches, the list of candidates can be dumped for debugging.

This will also make implementing OperationMatchers easier since they
will not need to redundantly check the name or type.
AbstractOpTest: use simpler Context#service method

It throws an exception if the service is null.