add support for full salts

Sometimes it is desirable to allow users to specify the full salt used
for hashing (e.g., so that assignments can be consistent across
multiple experiments). This change adds that functionality and adds
unit tests for it.