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.
rewrite of ccall with structs (byval) using clang