Fix reader char escape bugs (bug#55738)

Make the character literal ?\LF (linefeed) generate 10, not -1.

Ensure that Control escape sequences in character literals are
idempotent: ?\C-\C-a and ?\^\^a mean the same thing as ?\C-a and ?\^a,
generating the control character with value 1.  "\C-\C-a" no longer
signals an error.

* src/lread.c (read_escape): Make nonrecursive and only combine
the base char with modifiers at the end, creating control chars
if applicable.  Remove the `stringp` argument; assume character
literal syntax.  Never return -1.
(read_string_literal): Handle string-specific escape semantics here
and simplify.
* test/src/lread-tests.el (lread-misc-2): New test.
2 jobs for master in 25 minutes and 21 seconds (queued for 10 seconds)
Status Job ID Name Coverage
  Build Images
failed #46613
build-image-inotify

00:25:21

 
  Normal
skipped #46614
test-src-inotify
 
Name Stage Failure
failed
build-image-inotify Build Images
 > [emacs-inotify 5/5] RUN make bootstrap:
------
executor failed running [/bin/sh -c make bootstrap]: exit code: 2
Running after script...
$ test -n "$(docker ps -aq -f name=${test_name})" && docker cp ${test_name}:checkout/test ${test_name}
$ test -n "$(docker ps -aq -f name=${test_name})" && docker rm ${test_name}
find: build-image-inotify-c50718dc: No such file or directory
$ find ${test_name} ! \( -name "*.log" -o -name ${EMACS_TEST_JUNIT_REPORT} \) -type f -delete
ERROR: Job failed: exit code 1