Use Daniel Lemire's random algorithm
Use Daniel Lemire's random algorithm

For a long time I've wanted to use Daniel Lemire's nearly divisionless
algorithm for choosing a random number in s2n. It's the most efficient
implementation I know of and we have a small incentive for efficiency
here: under a DDOS where we incurr a lot of timeouts, it should be
as cheap as possible to pick the random backoff times.

Lemire introduced the algorithm with a blog post:

 https://lemire.me/blog/2019/06/06/nearly-divisionless-random-integer-generation-on-various-systems/

and a paper:

 https://arxiv.org/abs/1805.10941

but both are hard to follow, incomplete, and don't hit the readability
bar for code in s2n.

In this change I've implemented Lemire's algorithm and I've add
a huge 200-ish line comment explaining how it works in detail. There
are number lines, ascii art, ļogic tables, and morė. My goal is that
a college hire, familiar with basic C code, could read the comment
and fully agree that the algorithm is correct and faiṙ.

colmmacc/s2n,colmmacc/s2n,colmmacc/s2n,colmmacc/s2n,colmmacc/s2n,colmmacc/s2n