Rename signature section to footer section and add extra keywords
Parse parameters and bandwidth weights from consensus documents
Improved path selection to use bandwidth weights from consensus
State file implementation for persistently storing guard node information
Download new consensus at correct time
Don't return negative values
Let the circuit manager choose directory to use.  Also pass a more general 'purpose' code rather than specific event codes.
1) load state file 2) getRouterByIdentity() 3) CircuitNodeChooser should be used to get a random directory
Use entry guards to build circuits
Path selection may block (while testing entry guards) so move it into the circuit building task.
Return null if no routers are available to choose from
Log a warning if node chooser is not returning a valid entry guard
throw checked exception if path cannot be created because of failure to choose nodes
Document that these methods can return 'null'
Dashboard listens on a localhost port and dumps info about internal state if you connect to it