Rule for nullary methods of Unit type.

Warns when a nullary method returns unit.
Rule for unsound matches

Uses a scoping traversal to save the type of the expression currently being
matched.  It then compares this against the type inferred from the pattern
(pat.tpe).

Currently it produces twice as many warnings for partial functions because a
synthetic isDefinedAt method is generated which duplicates the patterns.
Add a rule for OptionImplicit