Allow setting mailbox passwords using other crypt() algorithms, with random salt

Specify which algorithm to use via the existing defaults.mailbox.password_scheme
The following algorithms are supported:
    crypt:md5 ($1$, dovecot MD5-CRYPT)
    crypt:blowfish ($2a$ )
    crypt:sha256 ($5$, dovecot SHA256-CRYPT)
    crypt:sha512 ($6$, dovecot SHA512-CRYPT)

Borrowed some GPL3+ code from RoundCube:
https://github.com/roundcube/roundcubemail/blob/master/plugins/password/drivers/sql.php