Rename Stretching module to KDF
Disable garbage collection for calculating PBKDF2

We previously attempted to avoid garbage collection while benchmarking
by triggering a garbage collection before the loop. This would provide
an unrepresentative sample, though, because in real usage garbage
collection would *not* be triggered ahead of time.

Better is to disable garbage collection entirely (rather than trying to
"fake" it). And best is to do this step every time the KDF is run, so
that the benchmarked case is representative of actual use.
Allow the PBKDF2 cost to be configurable
Rename PBKDF2#stretching to PBKDF2#derive for KDF consistency
Support PBKDF2 for sizes not multiples of the block size

PBKDF2 is built upon HMACS with block sizes that are powers of two. But
PBKDF2 supports deriving keys of sizes that aren't powers of two. Now
this works.
Add serialization framework through Protocol Buffers
Add support for generating keys