Create RandomRouteExample and dependent changes 

An example which selects a random route using consensus flags, based on SimpleExample.

Gareth, the changes to Consensus.getDirectoryStream() significantly modify its behaviour:
  - Use directory caches (where possible) to reduce load on authorities
  - Use random selection of directory caches / authorities
Setting the useDirectoryCaches flag to false restricts queries to the hard-coded authorities.
I could also create a flag which disables random selection, if the original behaviour needs to be preserved.

All other changes are additional functionality, which preserves the original interfaces and behaviour.

The full change list is:

Created RandomRouteExample:
  - Route through random Guard, Relay & Exit (with ExitPort policy check)
  - Use a random authority, then, once available, random directory caches
* Consensus:
  - Modified: Use directory caches (where possible) to reduce load on authorities
  - Modified: Use random selection of directory caches / authorities
  - Added: Get list of routers with multiple flags (including avoiding bad exits)
  - Added: Get random routers with multiple flags and an exit port
  - Added: Consensus updates (untested)
* OnionRouter:
  - Added: Exit policy checks
* TorDocumentParser:
  - Added: Exit policy handling (order of accept/reject matters)