This will allow us to parse v3 consensuses, v3 votes, v3 microdesc
consensuses, v2 statuses, and sanitized bridge network statuses without
duplicating too much code. v1 directories are too different, though.
The parser doesn't detect many problems yet. Most of the unit tests check
for the absence of exceptions when they really should test for the
exceptions. This is more like a TODO list for making the parser better.
The functionality implemented so far is sufficient to do the downloading
for the consensus-health checker. It does not, however, implement the
necessary parsing for the consensus-health checker yet.