Command line option improvements.

+ Added new flag `--checkpkg <package>` to type check only packages.
   + executables are not linked
+ Improved usage info styling
+ Added unmentioned flags added
Use Data.Text for variable names

An experiment: it appears to reduce memory usage and speed things up
slightly, but in its current form breaks type providers and :x. I am
stuck on working out what's wrong, so if anyone can see what the problem
is, please do let me know and/or fix it!
Strictness annotations

Improves execution time slightly by using Strict state where
appropriate, and strict constructor fields.
Make more fields strict
Uncommented the stuff in Decidable to see what happens.
Fix implicit arguments in syntax rules
Explicit instance to liftRel apparently makes Decidable work.
Merge branch 'master' of github.com:edwinb/Idris-dev
Fix logic in Executor

Thanks to David Christiansen for the hint!
Merge branch 'text-names'

Conflicts:
	src/Idris/Core/Elaborate.hs
EXPERIMENTAL: Disambiguate names in a block

Syntax: with <names list> expr
In the expr, if there are any ambiguous names which are defined in any
of the modules in the <names list>, restrict the options to that list.

e.g.

*disamb> with List [1,2,3,4]
[1,2,3,4] : List Integer

*disamb> with List [[1,2],[3,4],[5,6]]
[[1,2],[3,4],[5,6]] : List (List Integer)

*disamb> with Vect [[1,2],[3,4],[5,6]]
[[1,2],[3,4],[5,6]] : Vect 3 (Vect 2 Integer)

-- Fails since both options work
*disamb> with Vect, List [[1,2],[3,4],[5,6]]
Can't disambiguate name: Prelude.List.::, Prelude.Vect.::

-- Succeeds since only one option works
*disamb> with Vect, Stream [[1,2],[3,4],[5,6]]
[[1,2],[3,4],[5,6]] : Vect 3 (Vect 2 Integer)

This is really intended for disambiguating more complex or awkward
things, e.g. (>>=) can be disambiguated as follows:

foo = with Effects do
         putStrLn "Hello"
         --- etc
Merge pull request #782 from jfdm/feature/pkg-check-only

Command line option improvements.
Fix bug in 'forget' for well-typed terms

Meant that sometimes if names were shadowed, the wrong ones were picked
up when rechecking, so a term which should have been well-typed was not.

Fixes #714
A simpler approach to handling name shadowing

It's hard to get right, so there's no need to be clever (indeed there's
a need not to be clever). So just before elaboration (while adding
implicits and resolving global names) we traverse a term and rename any
binder which has already been used, inventing a unique name which is not
used anywhere else in the term.
Merge branch 'master' of github.com:idris-lang/Idris-dev
Check lambda bound name is valid

Can't bind a name that is the same as a global type constructor name.
This can lead to mysterious errors if unchecked, particularly with
dependent pair types.

Fixes #704
Merge pull request #783 from tpsinnem/master

Make Decidable.Decidable and Decidable.Order available with a little fix
Remove comments in Decidable.Decidable
Make $ built in operation, rename ($) to apply

Slightly controversial, but I think it is better this way.

Main advantage:
Plays much better with disambiguation (which doesn't work especially
well with HOFs since it looks at the goal type and the types of each
argument to disambiguate, and if a function is the argument to $ we've
lost some of that information). This will make elaboration quicker in
some cases. $ is quite handy notation and we don't want to discourage it
just because it slows down the elaborator.

Main disadvantage:
Very occasional use in HOFs itself. Hence the new function 'apply' which
does the same thing.
Remove apply from reg001 since it's in the prelude!