Change method of chaining basic blocks.

We now create global function pointer variables that are used to chain
basic blocks together using indirect calls. This has the following
advantages:

* Invalidation is simpler (just update one poiner, no need to walk all
  references).
* We only need one stub function in the module, instead of one stub per
  fragment.
* It avoids recompiling and relinking an existing function. Relinking an
  existing function. This will make it easier to switch to MCJIT in future
  (relinking an existing function isn't supported in MCJIT).
* It appears to be marginally faster than the previous scheme (at least
  for the dhrystone benchmark)