introduce SynopsisValidator class
Rewrite SynopsisParser to support optional values for assoc parameters.

Props @jmslbam for initial implementation and tests.

see #570