compiler: Use specific cell type on phi

Now that our type system can determine the most specific cell type for a
union use that for our phi result. This makes the produced IR slightly
cleaner and can help LLVM's TBAA optimisations.
compiler: Use fastcc for type preds and lambdas

These procedures are never directly called from C++ so they can use
whatever calling convention LLVM wants. Trampolines, __llambda_top_level
and main() still use the default C calling convention.

This is unlikely to make a difference for x86-64 -O2 but it might allow
faster calls and tail call optimisation on other platforms or lower
optimisation levels.
compiler: Comment typo fix
Freshen dependencies

- Scala 2.11.2

- scala-parser-combinators 1.0.2

- parboiled 2.0.0
compiler: Remove ListBuffer use in PlanApplication

scanLeft is more functional and a bit cleaner than using foldLeft +
ListBuffer.
compiler: Fix double evaluation in (apply)

If argument list operand to (apply) wasn't a known proper list we would
re-evaluate it again in the fallback application path. Fix by forking
the plan before we speculatively attempt to (apply).
compiler: Fix self-executing (apply) optimisation

We had fairly convoluted code to make sure we planned a self-executing
(apply) inline. However, the inlining code was at the bottom of apply(),
not the planWithOperandValues() function the (apply) path was calling

Fix by moving the code from the bottom of apply() to the top of
planWithOperandValues()
compiler: Remove extra blank line