Hack up partial ehabi descriptor parsing and refix lsda. descriptors are incomplete and almost certainly hooked up wrong.

Before this patch, exceptions are thrown, the language independent unwinding mostly works, but there doesn't seem to be any code path that can return the _URC_HANDLER_FOUND from the compact eht entries. Reading through the spec, it looked like we needed to walk the descriptors after the personality routine to find the matching catch blocks and then invoke the __cxa_type_match() escape hatch function to delegate type matching back up into the C++ layer.

This is an attempt to hack in support for type matching.  However, stepping through the code it looks like nothing other than the null descriptor is ever generated.

After a long amount of discussion over multiple days with thakis, danakj, and piman, the consensus is gcc and clang fallback into a pseudo dwarf style handling for anything other than the most basic unwinding by using the generic eht format to call _gxx_personality_v0. The generic PR's data blob is a length-prefixed sequence of unwind byte codes followed by the DWARF-style LSDA. That's why piman's code, which looked like it did a double-decode of the exception entry, worked and all our later changes broke things things

The current branch merges in this understanding.  It also passes -funwind-tables to clang++ which generates the complete unwind implementation.  Without -funwind-tables, when a non-trivial barrier is required, llvm just inserts a 0x00000001 "can't unwind" which causes exception propagation to fail out.