Add transaction API to IDatabase, e.g. begin(), commit(), and abort().  Add an
implementation of these to StockDatabase.  Expose 'commit' to doctest globals.
merge down-thread
Sprinkle a few more transaction API calls around to make sure the database
doesn't remain in a locked state, hosing other processes.

- Move a commit to the end of StockDatabase._create()
- Add an abort to the Exception clause if there's an error while dequeuing
- Add an abort to the Exception clause if there's an error while finishing
- Add a commit after _doperiodic() and _shortcircuit() is called.
- Add a commit to the end of cleaning_teardown() in test_documentation.py

This now makes all the tests pass even when all of them are run.
Add some randomization to the way tests are run.  This isn't complete (see
the help for bin/testall --randomize for details), but it still better than
nothing.
merge down thread
Move mailman.database.txnsupport to mailman.database.transaction and update
the txn() decorator.  It no longer requires a _withtxn() method since it knows
how to commit and abort the current transaction using the global database.

Flesh out the lmtp.txt doctest with documentation for both bogus and valid
subaddresses.
merged from upstream
merging thread
merging thread
Add some debug logging.
Don't timeout in TestableMaster.start().  Just wait until all queue runners
have been started, no matter what.
Added a common option parsing class, and converted master to it.
Convert bin/qrunner to use the new Options class.
Several fixes to command line scripts.

- Add an options base class that groks unicode argument types
- Rename newlist to create_list
- Update list_lists, master, qrunner
Rename rmlist to remove_list, and let it take multiple -l command line
arguments.

Added a MultipleMailingListOptions subclass.
Move AlreadySubscribedError to interfaces/member.py in the (new) preference
for putting exceptions close to the interfaces where they are used.

MakeRandomPassword() returns unicodes now.

Flesh out bin/add_members.py and bin/list_members.py
The start of exposing memberships in the IUser.
Flesh out and make working IUser.memberships, with tests.
merge pycon branch
Lots of little patches trying to get a simple end-to-end test working.  There
should be tests for these. :/

- Disable MTA hack in remove_list()
- Convert bin/inject to SingleMailingListOptions
- Remove an unnecessary import
- Fix qrunner restarts in bin/master
- Add IMailinglist.pipeline so that this value persists
- Move Runner.SLEEPTIME into the __init__() so that it isn't hurt by order of
  configuration initialization.