Added 'implicit bind' syntax

Intuitively, !f x y, means that 'f x y' should be bound before the call
(using >>=). Implicit binds can be nested.
Change implicit bind notation to a postfix !
Convert IO errors into erros in the Idris monad

Introduces a variant of liftIO, called runIO, that converts IO errors into
Idris errors with the Msg constructor.

Fixes #543.
Merge pull request #544 from david-christiansen/issue/543

Convert IO errors into erros in the Idris monad
Merge branch 'master' of github.com:edwinb/Idris-dev into implicit-bind
Check for file extension in :e

Now, when Idris is invoked without a module file extension, :e will add it.

Fixes #526.
Merge pull request #545 from david-christiansen/issue/526

Check for file extension in :e
Change '!' syntax and semantics to be uniform

! now prefixes a simple expression (most likely a name or a bracketed
application). !x means that the expression x (of type 'm a') will be
bound using >>= in the current scope. i.e.

foo !x
becomes
x >>= (\tmp => foo tmp)
Update CHANGELOG
javascript: substitute projections
javascript: reduce bitint constants
Use '!' in Effect.State
Support '!' at REPL
Fix bug in scoping rules for pattern matches

If a name appears in argument position which is also a constructor
name, it should be pattern-bound unless there is a constructor which
has zero explicit arguments.
Update Effect.File to use new failure handling

i.e. using if_valid to test for failure, and update resource accordingly,
rather than using exceptions.
Fix missing case in Defunctionalise.hs

Compilation should assume that all names have been fully resolved and
there is no ambiguity. This should solve the issue reported in #548, but
I can't confirm without a test case.
Merge pull request #547 from raichoo/master

JavaScript