Hash functions

Early draft for #492, as simple as possible (and even more). I just implemented hash functions for a few modules, but it should be easy to do so for other structures (e.g. `BatLazyList` or `Tuple2`, `Tuple3`...).