Rename secret_to_key to secret_to_key_rfc2440
Move secret-to-key functionality into a separate module

I'm about to add more of these, so we might as well trudge forward.
More generic passphrase hashing code, including scrypt support

Uses libscrypt when found; otherwise, we don't have scrypt and we
only support openpgp rfc2440 s2k hashing, or pbkdf2.

Includes documentation and unit tests; coverage around 95%. Remaining
uncovered code is sanity-checks that shouldn't be reachable fwict.
Rudimentary-but-sufficient passphrase-encrypted box code.

See crypto_pwbox.c for a description of the file format.

There are tests for successful operation, but it still needs
error-case tests.
Tweak and expose secret_to_key_compute_key for testing

Doing this lets me pass in a salt of an unusual length.
Test vectors for scrypt from draft-josefsson-scrypt-kdf-00
Test vectors for PBKDF2 from RFC6070
Use preferred key-expansion means for pbkdf2, scrypt.

Use HKDF for RFC2440 s2k only.
Test a full array of s2k flags with pwbox test.

Suggested by yawning.
Adjust pwbox format: use a random IV each time

Suggested by yawning
Use trunnel for crypto_pwbox encoding/decoding.

This reduces the likelihood that I have made any exploitable errors
in the encoding/decoding.

This commit also imports the trunnel runtime source into Tor.
Add tests for failing cases of crypto_pwbox
Merge branch 'libscrypt_trunnel_squashed'

Conflicts:
	src/test/test_crypto.c
Mention trunnel in LICENSE and src/ext/README