* lisp/textmodes/mhtml-mode.el: Fix bug#38372

The `sgml-syntax-propertize-rules` rely on the `sgml--syntax-propertize-ppss`
setup by `sgml-syntax-propertize` so it is not correct/safe to use
them directly like html used to do.

Change `sgml-syntax-propertize` so it can be used by mhtml,
and then adjust mhtml-mode accordingly.

* lisp/textmodes/mhtml-mode.el: Remove redundant `eval-and-compile`.
Only require cl-lib at compile-time.
(mhtml--syntax-propertize): New const, extracted from mhtml-syntax-propertize.
(mhtml-syntax-propertize): Use `sgml-syntax-propertize`.

* lisp/textmodes/sgml-mode.el (sgml--syntax-propertize): New const,
extracted from sgml-syntax-propertize.
(sgml-syntax-propertize): Add optional `rules-function` arg.
1 job for master in 90 minutes (queued for 3 seconds)
Status Job ID Name Coverage
failed #4388


Name Stage Failure
test-all Test The script exceeded the maximum execution time set for the job
make -C test check-expensive
make[1]: Entering directory '/builds/emacs/emacs/test'
rm -f ./*.tmp
make[2]: Entering directory '/builds/emacs/emacs/test'
make[3]: Entering directory '/builds/emacs/emacs/test'
ELC lisp/net/tramp-tests.elc
GEN lisp/net/tramp-tests.log
Pulling docker image gitlab/gitlab-runner-helper:x86_64-d0b76032 ...
ERROR: Job failed: execution took longer than 1h30m0s seconds