Make (++) right associative

Since (++) recurses on its left argument, (l ++ c) ++ r traverses l twice,
while l ++ (c ++ r) only once.

Furthermore, making (++) the same precedence as (::) enables the two to be
mixed.
Remove conflicting fixity declaration
Fix some load instructions being incorrectly marked as invariant for LLVM

This resolves some possible cases of undefined behavior.
Add mapVE for mapping over Vects in Eff

mapE existed for lists, but vectors were feeling left out.
Add index and index' to List.
Flatten tuples to right in pretty printer

* Tuples are flattened to the right, just as the parser nests them to
  the right

* Almost-duplicate printing code for tuples and pair types is greatly
  simplified.

Fixes #881.
Improve pretty-printing of function applications

* Show infix operators properly even if they have a number of arguments
  that isn't 2
   * snd . snd $ (1,2,3) is now (snd . snd) (1,2,3) instead of
     . snd snd (1,2,3)
   * (+) 4 is shown as (+) 4

* Show applications where all arguments are implicit without parens
  around them

Fixes #882.
Use the pretty-printer to show :doc

This has the benefit of colors in both console and IDESlave mode.
More reliably find argument names in :doc
More accurately find argument types in :doc
Add some indentation to functions in :doc

This vastly improves the readability of :doc for typeclasses
Fix compilation on Windows
Remove docstrings from things that can't have them
Actually parse documentation strings

They were previously being ignored by the parser. This patch causes them
to be saved.
Unification changes

Remove the horrible fudge which allowed some function arguments to be
unified in order to deal with type classes. Instead, record which
function variables are expected to be injective, and postpone any
attempt to unify function applications until later.

Still not completely right (there is another horrible fudge to remove),
and this will mean some programs which previously type checked will not
now. More to come...
Another unification fix

Removes 'matching' hack, which would sometimes cause function
applications in patterns to be unified when they shouldn't have been.
Fixes #898.
Add new regression test
Add Eq and Ord instances for ()
increased performance of enumFromTo using tailrecursion
Fix parameter propagation