Add support for Linux/PPC64 to Druntime.

With these commits Druntime compiles without patches on Linux/PPC64.
Fix a LLVM 3.3 problem with debug info generation.

In some cases an assertion is triggered because the debug context of a
local variale is verified. It turns out that LLVM returns always false
for DISubprogram.Verify() if the return type is not a composite type.
Reading the Clang source it looks like the return type must be a
subroutine type. This commit introduces a dummy subroutine type to
define the return type.
Better encoding of basic types.

The new code distinguishes between bool, int, char, float and complex types.
Cosmetic changes to gen/todebug.h.

Remove an unused prototype and transform comment from JavaDoc-style
to Doxygen.
Replace more occurances of std::vector with an array.
Added comment about multi-include x86 asm parser.
Remove useless log delimiters, we do have log scopes.
Make '-O' equivalent to '-O3'.

I have seen it used several times in benchmarks comparing it
to 'gdc -O3' and 'dmd -O -inline' now, so people apparently
expect it to yield the highest available optimization level.
More changes to std::vector usage.

Replace with std::vector with static array, llvm::SmallVector or
add code to reserve space.
More Dwarf debug code changes.

Add a fix for LLVM 3.3 (`createTemporaryType()` was removed) and add
linkage name to `createGlobalVariable()` (new in 3.3).
Return type must be of type DIComposite.
Merge pull request #315 from klickverbot/o-o3

Make '-O' equivalent to '-O3'.
Merge branch 'master' into merge-2.062