Hashing API

Here is the Hashing API I have written as part of my GSoC project. PreferredAlgorithms includes all my benchmarks except for Signatures as that requires my SigType enum. Benchmarks are based off of what I found that was already in the codebase. 
I must admit that I am almost violently opposed to making startup even slower than it already is.

Can it be made configurable? Maybe with a “benchmark on next start” option?