* Tweak release profile & micro optimizations
* Replace std HashMap with hashbrown::HashMap
The hashbrown::HashMap is faster than the std::collections::HashMap,
though it does not protect as well against malicious hash collisions
(e.g., in a DDoS). Since we don't expose the hashing externally,
we should switch to the faster implementation.
This very minor change moves tests from their current location in
submodules within the file under test into submodules in separate
files. This is a slight deviation from the normal Rust convention
(though only very slight, since the module structure remains the
same). However, it is justified here since the tests are fairly
verbose and including them in the same file was a bit unwieldy.