C++ functions are now called via generic trampolines using second pointer.

This involves a bunch of stuff:
- Logic to pass the target function (second pointer) when it's non-null.
- Uniquing of generic reverse trampolines.
- Static initialisation tricks to ensure C++ reverse trampolines are
  instatiated at compile-time if they might be needed, and are available
  during Yang compilation.

Still doesn't actually allow anything we couldn't do before; but it'll be
trivial to allow passing arbitrary C++ functions to Yang code now.