Merged assorted changes from be.wtk-rr for BugDir.extra_strings.

Other highlights:
  * be show --no-comments
  * Improved *.sync_with_disk.
  * Improved be-mbox-to-xml.
Initial implementation of the comments export
Show text of comment's reference in notes when spawning EDITOR.
Added becommands/subscribe.py to manage subscription list.
libbe/tree.Tree.traverse(depthFirst)->depth_first & stripped trailing spaces.
Added libbe.tree.Tree.has_descendant().

Tree equality is now based on instance id.  It had previously used the
default list "equal if all elements are equal", which meant that all
the leaves matched each other.
Added comment on notification granularity (commit-level).
Fixed unrecognized "Test" typo in becommands/comment.py.
Added libbe.bug.cmp_comments(), and added that to default bug comparison.
Added bugdir setting comparision to libbe.diff.

Renamed libbe.diff.diff -> bug_diffs, since it doesn't compare bugdirs.

Load comments before bug comparision so cmp_comments will see them.

Use .settings_properties rather than static lists to create attribute
lists for change_lines().

Removed trailing endline from becommands/diff.py output.
Merged libbe.diff upgrades and libbe.tree.Tree.has_descendant from be.wtk-rr.

Also pulls "show referenced text" fix to "be comment".
Added Tree types and get_bugdir_subscribers to becommands/subscribe.py.

The Tree subclass SubscriptionType may be a few more lines to setup,
but they should be really easy to extend and will automatically keep
the longhelp and type handling in sync.

An example extension for bugdir types would be
  all -> assigned -> <user>
to subscribe only to bugs being assigned to the specified user.  You'd
have to loosen the currently strict InvalidType checking to make that
work, but the current type-tree handling would be up to the task.

Also a bit of reorganizing to hide the private functions.
Broke encodedMIMEText out of send-pgp-mime.PGPMimeMessageFactory.

It's useful enough even when you're not intending to encrypt
something.
libbe.rcs.RCS.commit() now actually calls .pre/postcommit().

It hadn't before, which defeats the Pu purpose of hook functions.
This hand't caused any problems though, since only libbe.bzr defined a
postcommit() and there were no precommit() definitions.

Bzr's postcommit() had been to auto-merge from the default merge
source.  Yikes!  Removed that ;).
Added .revision_id() to all the VCSs.

This makes it easier to compare recent revisions without a human
around to give you revision numbers.
"be diff" now compares agains the last commit (for versioning VCSs).

This is the default behaviour of most of the VCSs own diff commands.
be-handle-mail successfully generates bugdir-changed notification emails.

This still needs a lot of cleaning up, but it worked for an "all"
subscription to "DIR", so I thought I'd lock in the current status ;).
Merge large rework from W. Trevor King.
Added autocommit wishlist request by Martin Krafft
Renamed Comment.From and .time_string to .author and .date respectively.

Now they conform to the
  libbe.settings_object.setting_name_to_attr_name()
standard.

I fixed the references I found in
  becommands/comment.py
  interfaces/xml/be-mbox-to-xml
  interfaces/xml/be-xml-to-mbox
but there may have been some references or files that slipped through.