Revert "Revert "partially fix #2149, partially support more efficient struct return (disabled). unfortunately this breaks ComplexPair{Int} (ComplexPair{Float64} seems OK)""

This reverts commit 4fa936436a1ebb44b4e73023e557d3f686f8dacc.
mostly fix #2149, and add tests for ccall structs. now only
ComplexPair{Int32} and similar small, integer structs are broken for
ccall pass-by-value (not a new problem)
missing initializers is bad (lost during rebase of ccall_struct?)
initialize clang
WIP: clang ccall
add llvm debug build option
WIP: fixes and clang comments
emission of ccalls through clang api is functional
describing how to implement support for ccall structs
many structs now work with ccall
fix pointer unbox to be less strict about type, formatting
fix temp alloca, for call with int128
add ccall support for complex
fix tests (bitstypes are immutable)
ccall correction for linalg test
fix llvm DEBUG macro mismatch