Several enhancements, including sorting, age, and encoding

This adds several enhancements and tweaks to tugboat.  First up is a
quick cleanup to output file encoding, by switching to io.open() and
passing "encoding='utf-8'".  This was the best way to ensure output
is the same in both Python 2 and Python 3, while ensuring that non-
ASCII characters are emitted correctly.

The second major change is the addition of options to control the
sorting order on generated reports.  The default is now to sort by
pull request creation time (previously, it was last update time),
and options are available to sort by creation time, update time,
or repository name and pull request number.

The third change affects the text of the report itself.  Pull
request times are now followed by text indicating how long ago the
relevant time was.  Related to this is the addition of a summary
section at the beginning of the report indicating the oldest and
youngest pull requests, and those pull requests most recently and
least recently updated.  For now, this information is formatted by
passing a datetime.timedelta to str(), but in the future, better
formatting may be used to make this information a bit more readable.