Nettle.BlockCipher: Added substate_factory().

Added API hook to simplify implementation of compatibility wrappers
for the moved algorithms.
Crypto: Implemented compat wrappers for CBC and Buffer.

This should simplify migration of Pike 7.8 crypto-related code.
Testsuite: Don't complain about deprecations in compat code.

That compatibility code has deprecation warnings is to be expected,
so there's no reason to complain about it.
Testsuite: Updated the Nettle and Crypto testsuites.

Both the new and the old Crypto APIs should now be tested.
Compat: Added 7.8::ADT.struct.

Reduce type strictness in 7.8 compat mode.
Compat: Added 7.8::SSL.

This is based on the last version of SSL on the 8.0 branch
that was still compatible with Pike 7.8 (ie before the PEM
API changes).

Intended use is Crypto API compatibility testing, though it
is probably more competent than the current Pike 7.8 SSL.
Compat: 7.8::SSL: Improved robustness in destroy().

Applies the "SSL: Improved robustness in destroy()." fix from
Pike 7.8 in the Pike 7.8 compat SSL module:

The embedded stream may still be registered with a backend when the
sslfile object loses its last reference. Make sure not to trigger
the "In callback mode in a different backend." error in that case.

Fixes [bug 6958].
Compat: 7.8::SSL: Some more robustness fixes in destroy().

Apply the "SSL: Some more robustness fixes in destroy()." fix from
Pike 7.8 in the Pike 7.8 compat SSL module:

set_nonblocking_keep_callbacks() calls update_internal_state(),
which is likely to install callbacks and thus may trigger the
tests in CHECK_CB_MODE() (cf [bug 6958] #6).

Yet another potential fix for [bug 6958].
Compat: 7.8::SSL.sslfile: Improved propagation of write errors.

Applies the "SSL.sslfile: Improved propagation of write errors." fix
from Pike 7.8 in the Pike 7.8 compat SSL module:

The write callback needs to be called on write failure
if there's no close callback and even if there's data
buffered for writing.

Fixes Stdio.sendfile hanging on SSL.sslfiles where the
remote has closed the connection before reading all data.

Fixes remainder of [bug 6958].
Compat: 7.8::SSL.sslfile: Make sure not to hang on destruct.

Applies the "SSL.sslfile: Make sure not to hang on destruct." fix from
Pike 7.8 in the Pike 7.8 compat SSL module:

The destruct callbac could hang in the local backend when attempting
to close the connection cleanly. Make sure that the local backend
doesn't wait for I/O completion in this case.

Fixes [bug 7066].
Testsuite: Fix some Pike 7.4 compat code.