Multiple dtable / sparse array improvements

* dtable.m is now the old sparse array, using IMP as type for values and
  thus not violating the C standard anymore (functions may not be stored
  in void*)
* New sparsearray.m which can work with any size, based on the sparse
  array from the fast path of class.m
* Fast path of class.m now uses the new sparsearray.m
Fix a few instances of signed vs. unsigned
Work around dlsym() API not being valid C

This only silences the compiler. Storing function pointers in void* is
illegal, yet POSIX requires it.
Enable -pedantic