Use libsodium's scrypt when parameters allow
Use faster fallback on pypy
Fix some bounds checks, improve test coverage
Allow faster testing by using a fast fallback
Improve coverage and check against overflow