Use a better method for counting enum values.
Renamed XARRAY / ARRAY to XSUFFIX / SUFFIX.

Why? Because the option can also be used to create bitfields, but having
two options that do the exact same thing would be superfluous.
Documentation and minor internal tweaks.
Added user-specified pointer arguments to iterator functions.
Replaced XVALUE and XSUFFIX with a far simpler alternative.

...Namely, an optional variadic argument at the end of the X(...) macro.
I ditched variadic arguments because of issues with commas, but it seems
that a single variadic argument doesn't hurt anything, and that's all I
need in this case.
Iterators now return any nonzero callback return value, otherwise 0.

Needs documentation, though.