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.