Make the parentheses around a with-rule scrutinee mandatory

Right now, parentheses are required around any non-atomic expressions that are
the scrutinee of a with-rule. In practice, this means that almost all
expressions require parentheses, as with is typically used to introduce more
information that was not available in the outer pattern match.

In the standard library, the only place where with rules occur without
parentheses is in Data.Bits.

Making the parentheses mandatory vastly improves parser errors in case they
are forgotten, RE #166 .

Sample of current message:
./WithRule.idr:4:14: error: expected: "{",
    function declaration
foo x with x == 0
             ^

Sample of message with this patch:
./WithRule.idr:4:12: error: expected: "("
foo x with x == 0
           ^
Further improve error message on missing parens after with

Now, instead of saying "missing '('", the parser says "missing parenthesized
expression".
Merge pull request #504 from david-christiansen/with-parser

Make parens mandatory after with - vastly improving the error message