Implement incremental version of SipHash 2-4 and HalfSipHash 2-4
When inserting items into hashtables (hashmaps), we might have a fragmented key (as an example we might want to hash DNS name + class + type). We either need to construct continuous key in the memory and then hash it en bloc, or incremental hashing is required.
This incremental version of SipHash 2-4 algorithm is the first building block.
As SipHash 2-4 is often used in the hot paths, I've turned the implementation into header-only version in the process.
Closes #4306 (closed)