BridgeDB should use Stem for parsing descriptors

Currently we're lenient about how we parse descriptors, in some cases. For example, if we only need the first four values on a line, but the spec mandates there be 6 we presently do:

if len(items) >= 4:
    nickname = items[1]
    ip = items[2].strip('[]')
    orport = int(items[3])

We should ensure the line is well-formed before accepting the values. Something closer to:

if len(items) == 6:
    nickname = item[1]
    ip = items[2].strip('[]')
    orport = int(items[3])
else:
    logging.warn("Parsed malformed descriptor 'router' line. Expected 6 items, but line has %d" % len(items))
    logging.debug("  Line: %s" % items)

(Logging sold separately. (Untested code))

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information