time: pass struct tm equivalent tables with POSIX field names.

* specs/posix_spec.yaml (gmtime, localtime, mktime, strftime)
(strptime): Move from here...
* specs/posix_compat_spec.yaml (gmtime, localtime, mktime)
(strftime, strptime): ...to here.  Add full specifications.
* specs/posix_time_spec.yaml (clock_getres, clock_gettime, gmtime)
(localtime, mktime, strftime, strptime, time): Specify behaviours
of thin bindings for these APIs.
* specs/specs.mk (specl_SPECS): Add specs/posix_time_spec.yaml.
* ext/posix/time.c (Stm_fileds, totm, pushtm): Convert and verify
C struct tm records and Lua PosixTm tables.
(gmtime, localtime, mktime, strftime, strptime): Simplify
accordingly.
* lib/posix/compat.lua (PosixTm, LegacyTm): Convert between new
PosixTm tables and old custom field name `struct tm` tables.
(gmtime, localtime, mktime, strftime, strptime): Reimplement
legacy table manipulation APIs over new thin bindings.
* NEWS: Update.

Signed-off-by: Gary V. Vaughan <gary@gnu.org>