Refactor and revise SysV AMD64 ABI.

I had another look at the official ABI specs and fixed some issues of
our classify()-based version, e.g.:

* upper half X87Up, but lower half not X87
  => pass whole argument in memory
* pass X87 stuff (real/ireal/creal) in memory
  (but return in X87 registers)
* choose a fitting (integer/struct) type for structs/static arrays of
  sizes 3,5,6,7,11,13,14,15 bytes

Unfortunately, DMD's implementation passes reals in registers and all
static arrays with != 1 element in memory ('for efficiency'...).
That's what the classify()-based version in the ldc_abi namespace now
does too for druntime/phobos compatibility, but it's incorrect and
needs to be fixed sooner or later.