Document (ice-9 and-let-star)

* doc/ref/srfi-modules.texi: note that (srfi srfi-2) is the same as
  (ice-9 and-let-star).
Angle of -0.0 is pi, not zero

* libguile/numbers.c (scm_angle): Check the sign of an inexact real
  zero, to ensure that (angle -0.0) => pi and (angle 0.0) => 0.0.

* test-suite/tests/numbers.test (angle): Add tests, and increase
  precision of tests where the angle should be pi.
update structure documentation

* doc/ref/api-compound.texi (Records): Add a link to SRFI-9 records.
  (Structures): Add a link to Records.  Describe tail arrays as
  deprecated, and add a rationale and some details.
improve documentation for structs

* doc/ref/api-compound.texi (Structures): Update to describe
  <standard-vtable>, to remove documentation for make-vtable-vtable, to
  describe meta-vtables, and to add a long example.
deprecate make-vtable-vtable

* libguile/struct.h:
* libguile/struct.c (scm_make_vtable_vtable): Deprecate, as you can
  handle most of the use cases with make-vtable, and we don't want to
  promote the creation of new roots to the type hierarchy.
  (scm_i_make_vtable_vtable): The internal replacement.
update tests after vtable-vtable deprecation

* test-suite/tests/goops.test ("classes for built-in types"): Use a
  vtable instead of a vtable-vtable.

* test-suite/tests/structs.test (ball-root)
  ("low-level struct procedures", "make-struct"): Rework to use normal
  vtables instead of making new vtable-vtable.
set struct names for <standard-vtable>, etc

* libguile/struct.c (scm_init_struct): Set the struct names for
  <standard-vtable>, <applicable-struct-vtable>, and
  <applicable-struct-with-setter-vtable>.
Add tests for 'exp' and 'expt' that should produce complex NaNs

* test-suite/tests/numbers.test (exp, expt): Add tests that should
  produce complex NaNs, but apparently don't on all systems.
Avoid cexp, whose C standard definition is mathematically incorrect

* libguile/numbers.c (scm_exp): Do not use cexp.
Revert "Avoid cexp, whose C standard definition is mathematically incorrect"

This reverts commit ecbded71bb423a6055c541d6272796aefd1486f9.
Revert "Add tests for 'exp' and 'expt' that should produce complex NaNs"

This reverts commit cc26b9de1d3c21cb4be49cc61c4b5872b8f607c5.
reinstate type check to scm_to_utf8_stringn

* libguile/strings.c (scm_to_utf8_stringn): Re-add missing type check,
  inadvertantly removed in e3d4597469a543d97c4997b128509c2ceb13ca2b.
Optimize `scm_lfwrite_substr', used by `scm_simple_format'.

Fixes <http://bugs.gnu.org/12033>.
Reported by nalaginrut <nalaginrut@gmail.com>.

* libguile/print.c (scm_i_display_substring): New function.
* libguile/print.h (scm_i_display_substring): New internal declaration.
* libguile/ports.c (scm_lfwrite_substr): Use it instead of `scm_display'
  + `scm_c_substring'.
Micro-optimize (ice-9 format).

* module/ice-9/format.scm (format): Use `call-with-output-string'
  instead of `with-output-to-string'.
more robust texinfo alias handling

* module/texinfo.scm (command-spec): Resolve aliases here.
  (complete-start-command, make-command-parser):
  (make-dom-parser, parse-environment-args): Reload command after
  resolving spec, so we get the alias target.
Fix uri-encoding for octets 0-15

* module/web/uri.scm (uri-encode): All encoded octets should be of the
  form % HEXDIGIT HEXDIGIT.
* test-suite/tests/web-uri.test ("encode"): Add test.
Fix uri-encoding for strings with no unreserved chars

* module/web/uri.scm (uri-encode): Change test to check for unreserved
  chars instead of reserved chars.
* test-suite/tests/web-uri.test ("encode"): Add test.
Update `texinfo.test' to match latest change.

* test-suite/tests/texinfo.test ("test-texinfo->stexinfo")["@url{arg}"]:
  Update test as a follow-up to
  dc7a9cefbf5434b6e7e503fe83faa07b24a1a6cd ("more robust texinfo alias
  handling").
doc: Fix description of regexp/locale encoding interaction.

* doc/ref/api-regex.texi (Regexp Functions): Update paragraph that
  mentions locale encoding and strings-as-bytes.

* test-suite/tests/regexp.test ("nonascii locales")["match structures
  refer to char offsets, non-ASCII pattern"]: New test.
ISO 8601 time format specifies zero padding for hours, not blank padding.

* doc/ref/srfi-modules.texi ("SRFI-19 Date to string"): Fix iso 8601 format strings.
* module/srfi/srfi-19.scm (directives): Fix iso 8601 format strings.