Disallow assembler labels on OSX.

In the configuration, if we're on OSX, clang is selected
as the toolchain. However clang cannot handle taking the address
of a label in a function other than the current one which is
implemented for gcc using assembler labels.

I suspect the addressing is ok, but clang's optimisations
doesn't notice the address is taken (because C is bypassed),
and so optimises the target function as if the label was never
jumped to. Consequently the computed goto to that label using
the calculated address doesn't work.

This is a bug in clang, but we have to work around their
optimisation model, which relies on converting code to SSA
form and analysing control flow, on a per function basis,
and probably doesn't allow for external address taking
via assembler.

Although addressing external labels is only required for
non-local gotos, if the dispatch is done with a computed
goto there is little choice, so we have to revert to
the standard C method using integers for locations and
using a switch.

This means clang code will be a lot slower than gcc.
An alternative technique exists: label addresses stored
in an array and indexed by a compact subrange of integer:
this requires an extra lookup but is still faster than
the if/then/else chain that the switch must implement.
However Felix doesn't currently support this method.

Nonlocal label addressing is essential for coroutines.
This fix makes the coroutine test work with clang.
I have no idea why that is the only code that appears
to fail, since non-local gotos are used in other places.