Distinguish postulate providers and type providers at use site

This is not backwards compatible, but as far as I know, there are no
users of postulate providers who are not me.

The old system allowed both the definition of the provider and the use
site to be involved in the determination of what is a postulate and what
is not. This is not good - users should always be in full control of
this.

The new implementation has two syntaxes:

%provide (x : t) with p

%provide postulate x with p

The first is the type provider syntax we know and love. The second
requires that the provider in fact return a type, which is then made
into the type of the resulting postulate.
Merge pull request #1287 from david-christiansen/postulate-providers

Distinguish postulate providers and type providers at use site
Add semantic highlighting for postulates

Fixes #1286.
Fix name propagation in error messages

Fixes #1225
Merge branch 'master' of github.com:idris-lang/Idris-dev
Merge pull request #1288 from david-christiansen/issue/1286

Add semantic highlighting for postulates
foldl1 implementation
Update optparse-applicative bound to match used features

Having an earlier version than 0.8 was met with failure to compile
Merge pull request #1285 from Heather/master

foldl1 implementation
Merge pull request #1290 from Melvar/fix-optparse-bound

Update optparse-applicative bound to match used features
Correct IDESlave protocol violations in prover
Merge pull request #1296 from david-christiansen/ide-prover

Correct IDESlave protocol violations in prover
Remove unnecessary partiality
Merge pull request #1297 from david-christiansen/ide-prover

Remove unnecessary partiality
Reorder code to make it more readable
IDESlave protocol fixes in case of error

Previously, Idris was asking for the same continuation to be deleted
twice in case of errors.
Merge pull request #1298 from david-christiansen/ide-prover

Reorder code in prover to make it more readable + solve IDESlave protocol failure on prover errors