Add pkg-config gc flags to llvm Makefile

This makes building work for systems which have gc installed in a
non-standard location.  The invocation was pulled from
https://github.com/schani/clojurec/pull/2, and then modified based on
https://github.com/idris-lang/Idris-dev/pull/428#issuecomment-26302460.
Correct Semilattice Implementations
Change 'Not a guess' error

On further investigation, every time this is encountered it means that
there are still holes in a subterm, so the appropriate error is
"Incomplete Term".
Resolve class instances under let bindings

This only really matters when there is a default Num instance to be
resolved - in other cases it'll be dealt with by the resolution under
the PApp elaboration.

Fixes #1388
Fix data ctor arity comparison.
Fix parameter spotting in function types

We were only looking in the return type, not the argument types.
Fixes #1391
Disjoint constants should be fatal in unification

Fixes #1390
Merge pull request #1392 from ziman/fix-dctor-erasure

Fix erasure from data constructors
x = y now tries homogeneous equality first

People often assume that the type of x is enough to give the type of y,
but because = is heterogeneous this isn't always the case. So now the
elaborator will assume homogeneous equality is intended, and revert to
heterogeneous when necessary.

Fixes #1386
Normalise before abstracting over 'with' type

Otherwise we don't necessarily abstract over the scrutinee properly in
the resulting function.
This has necessitated a hack in Data.Bits, which I will sort out ASAP.
Normalise everything before 'with' abstraction

Now the TMP HACK in Data.Bits can go
Replace 'effects' with neweffects
Remove neweffects from cabal
Clarify semilattice documentation
Update version number
Merge pull request #1384 from lenary/correct-semilattices

Verified Bounded Semilattices are incorrect
Merge branch 'gc-header-fix' of https://github.com/JasonGross/Idris-dev into JasonGross-gc-header-fix
Spot name clases in error messages

This just renames the internal name to something distinguishable. It's
still not completely clear (since it's a renaming from the user's name)
but given that the message means a user has picked the same name twice,
there's not too much else we can do easily... Certainly it's better than
"Can't unify f x with f x"...

Fixes #705
Merge branch 'JasonGross-gc-header-fix'
Generate better record projection types

In particular, pay attention to parameters since there is no need to
project in the type for these.

Fixes #201
Fixes #1356