Abandon ifuncs and go with the traditional global function pointers.

In addition to the failing testcase, there were a couple of
regressions in piglit's attribs test: one from glBegin_unwrapped vs
glBegin confusion in the __asm__ directives we were generating, and
one where the function pointers apparently were just getting mixed up
at application runtime.
Move the #defines into the main generated header.

I initially thought I was going to have two sets of defines you chose
from using #include, but that never ended up being necessary.
Use offsets into a string table to reduce the binary size.

Saves 54k on disk and 3700 relocations.
Reuse the same string table in one more place.

Saves another 53k on disk, no relocations.
Use a non-inlined helper for the simple case of a single provider.

This reduces the built size by another 37k.