sanify stat API & ABI
- clean up sys/stat.h & remove stat_impl.h
- use our new shiny feature test macros
- use struct timespec instead of timestruc_t
- don't bother supporting !defined(__STDC__)
- reduce the number of struct stat definitions; in particular, change
the 32-bit stat ABI to have the same members as it does on 64-bit. the
sizes are still different for now because of struct alignment, dev_t
and timespec32/timespec64, but this could change later.
- a new 'struct stat32' is used for this (for the kernel only).
- remove the source compat stat *64 functions. the aliased syms remain
in libc until recompiles can be done.
as this breaks the current 32-bit ABI, the libc fstatat, fstat, lstat,
stat symbols become transitional wrappers that convert the struct
returned by the kernel into the old ABI, and newly compiled 32-bit
programs will use those symbols with the suffix _new. we don't intend to
keep the "_new" symbols, rather this transitional interface and the
compat symbols will be removed once we've recompiled things we depend
on.