Factored actual literal building code out of ArrayLiteralExp::toElem.
Comment typo fix.
Do not GC-allocate temporary for static array initialization.
Combine ArrayLiteralExp::toConstElem and initializeArrayLiteral implementations.
Do not heap-allocate immutable array literals.
Never emit long array literals as inline constant.

Also cleaned up rest of the code a bit.

The LLVM 3.1 problem was already fixed before by not doing
anything on zero-element arrays anyway.
Merge pull request #493 from klickverbot/sarray-init

Avoid allocating array literals on initialization