Show a question mark next to optional parameters

Closes #7.

@dscho and I discussed putting the optional arguments in square brackets
as is the usual convention with optional CLI tool arguments, but I think
it is harder to read than the question mark notation.

And the question mark notation was easier to code. ;-)
DefaultOpMatchingService: deal with invalid ops

If an op is invalid (e.g., it has an @Parameter with the "final"
keyword), it should never match anything.

We should also warn that the op is invalid in its op string.

It would be ideal to also explain *why* the op is invalid, but that task
can wait for another day...
Fix bug in optional parameter matching
Do not try to assign null inputs

Null values are meant to indicate an optional parameter whose value
should be left as default.
OpMatchingServiceTest: fix testOptionalParams

The test was not enabled, and had a couple of bugs:

1) The OptionalParams op had final parameters, which is illegal.

2) The OpMatchingService#findModule method throws
   IllegalArgumentException, rather than returning null, when there is
   no match.