Speed up elaboration of larger functions

Mostly by making atH less stupid when searching for a hole (there is
more needs to be done on this...)
Merge branch 'master' of github.com:edwinb/Idris-dev
Reorder goal search for efficiency

Better to search first in places where the goal is most likely to be!
Another minor efficiency gain in elaborator

Call updateSolved less often. Also cut down search in Effects to depth
of 20 (this still needs to be done better, but it seems to have a large
effect on typechecking time for effects programs).
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
javascript: added test 29 to 31 to suite
Make --install respect TARGET for .ibc AND objects

Fixes #509
javascript: add naive optimizer
javascript: refactored tailcalls
javascript: use optimizer for tailcalls
Merge pull request #506 from ahmadsalim/master

Further work on parser