crypto: switch poly1305 to incremental implementation
This code is taken from poly1305-donna-32.h, poly1305-donna.h, poly1305-donna.c
from https://github.com/floodyberry/poly1305-donna, commit
e6ad6e091d30d7f4ec2d4f978be1fcfcbce72781, with the following modifications:
- Coding style (braces around one-line indented if/for loops).
- Rename unsigned long (long) to uint32_t and uint64_t.
- Rename poly1305_block_size to POLY1305_BLOCK_SIZE.
- Adding noexcept to functions.
- Merging poly1305_state_internal_t and poly1305_context types.
- Merging code from multiple files.
- Place all imported code in the poly1305_donna namespace.
crypto: add Poly1305 class with std::byte Span interface
with a new UCharCast signature from https://github.com/bitcoin/bitcoin/pull/27479/commits/eff72a0dff8fa83af873ad9b15dbac50b8d4eca3
tests: add more Poly1305 test vectors
This is a partial backport of core#27993
https://github.com/bitcoin/bitcoin/pull/27993/commits/50269b391fa18556bad72dc8c2fb4e2493a6a054
https://github.com/bitcoin/bitcoin/pull/27993/commits/40e6c5b9fce92ffe64e91c2aba38bb2ed57bfbfb
https://github.com/bitcoin/bitcoin/pull/27993/commits/8871f7d1ae096839abcbf25a548319185acc01a2