Simplify hashing

Would be nice to get some comments on this.

* Kill OnPassCompare() with fire
* Move HMAC and password comparison out of m_password_hash, into the core
* Add a Compare function to hash providers, as == does not do it in the case of e.g. bcrypt
* Add a bcrypt module
* Rename functions to be more intuitive
* Generate() takes a parameter to decide of it returns it's RAW format, e.g. for storage, or it's printable (default param).
* Kill sumIV() - this isn't used anywhere in the source anymore
There is a set of sequential steps here which is always the same so a loop with a switch in it is not appropriate. Please replace with a straightforward "step 1 then step 2 then step 3" code