Check crypt_rn/crypt_gensalt_rn errors and improve interface

bcrypt.* calls will now error appropriately if their receive bad inputs.
bcrypt.digest can now be used with a rounds parameter instead of a salt.