Support for NTor handshake.

Refactor to remove strong coupling to TAP handshake from some classes.
Catch and handle TorException.

cannibalizeTo() can throw TorException during the extend message exchange.
Added AutoBool type and UseNtorHandshake to config.
Added access to UseNTorHandshake consensus flag.
Enable NTor based on consensus flag and config variable.
Support for microdescriptors
Refactor NTor key derivation into a class
Added methods for deriving arbitrary lengths of key data
Oops, reversed order.
Decide to use microdescriptors or not at a later time
so that the correct value will be read from config.
Fixed a bug which was preventing some microdescriptors from hashing correctly.
set flag to recalculate minimum descriptor ratio after loading microdescriptors
Forgot to actually copy seed value
Pass config to DirectoryDownloader
put constantTimeArrayEquals into utility class
Manage names of cache files in one place
Support parsing from a ByteBuffer
Parse descriptors from buffer