Rewrote most of the file with more readable code style added more options, and cleaned up implementation.

- Now, you must specify a MAC function to use. (use the atom 'sha' to get the previous behavior)
- Everything comes back as raw binary, now; you should probably encode it with pbkdf2:to_hex/1 or base4:encode/1 if you're putting it a non-binary-safe place.
- Renamed pbkdf2:verify/2 to pbkdf2:compare_secure/2 to make it clearer what its purpose is.
Fixed to_hex to return binary if it gets a binary, and removed the ability to pass arbitrary digest functions, since crypto:hmac doesn't support it.
Corrected the tests to work with the latest changes.