Small ppLlvmBlock rewrite

Use standard library "break" instead of manual loop
Use full contents size for arrays

I am not quite sure at what point it makes sense to look at arrays as
pointers, but I ran into at least one use case that strongly suggested
doing it this way (calculating the actual size of structures, to be exact).
Major Llvm refactoring

This combined patch changes a good number of things about the LLVM backend.

1. Most prominently, we introduce a LlvmM monad carrying the contents of
   the old LlvmEnv around. This patch completely removes LlvmEnv and
   refactors towards standard library monad combinators wherever possible.

2. Support for streaming - we can now generate chunks of Llvm for chunks
   of Cmm as it comes in. This might improve our speed.

3. To allow streaming, we need a more flexible way to handle forward
   references. As an added bonus, using this we can unify LlvmCodeGen.Data
   and getHsFunc as well.

4. Skip alloca-allocation for registers that are actually never written.
   LLVM will automatically eliminate these, but output is smaller and
   friendlier to human eyes this way.

5. We use LlvmM to collect references for llvm.used instead of re-deriving
   them from the input Cmm. I think this is nicer.
Fix llvm.prefetch instrinct for old LLVM versions

Seems it gained the last parameter in LLVM 3.0.