Add datatype for reflected errors
Work around parser bug
Added flag for error reflection extension
Add parser and tests for parser for error reflection extension
Add test031 to cabal file
Merge remote-tracking branch 'upstream/master' into error-reflection

Conflicts:
	src/Idris/Parser.hs
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 #501 from david-christiansen/error-reflection

Basic infrastructure for error reflection in compiler
Merge pull request #504 from david-christiansen/with-parser

Make parens mandatory after with - vastly improving the error message
Allow eof instead of eol for comments, closes idris-lang/Idris-dev#503
Some refactoring of bracketed expressions (centralizing most of the
expressions). This provides some simplification for future optimization
of grammar regrding issue idris-lang/Idris-dev#452.
Refactored data declaration to use less lookahead for better errors and
some performance improvement
Refactored constraint syntax to use less lookahead
Changed structure of parser such that it correctly overloads
TokenParsing using some newtype hackery.
Fixed Trifecta version to 1.1 until future versions work again