Complete web links.

(If a web log is called a "blog", is a web link called a "blink"?)
Fix Python 2.6.x compatibility.

The subprocess module in Python 2.6 has a CalledProcessError class,
but its constructor doesn't take a third (output) argument.  So don't
only pass the constructor two arguments.
Extract a method commit_tree().

Its implementation needs to be changed, so centralized how it is called.
Pipe commit message into "git commit-tree" rather than using "-m" option.

The "-m" option was added to Git recently, so use the old-fashioned
method to be portable to older Git versions.
Merge branch 'commit-tree-no-m'

Do not use "git commit-tree -m", because the "-m" option has only
recently been added to Git.
Fix call sequence for old "git commit-tree".

Apparently old "git commit-tree" requires "TREE" *before* "-p PARENT".
Merge branch 'knirch/preserve-author-info'

When simplifying an incremental merge into a "rebase", preserve the
author info from the original commits (but update the committer info
to the person running "git-imerge simplify").

I've taken some liberties when merging this commit, integrating it
into the commit_tree() command that I recently added for backwards
compatibility reasons, and renaming the function get_commit_info() to
get_author_info().

Conflicts:
	git-imerge
Remove unused diagram argument, and s/fill_diagram/create_diagram/

The diagram argument to the fill_diagram() methods of MergeFrontier and
Block was never used, so remove it. Once removed, the fill_diagram()
name no longer makes much sense, since the diagram is created within
the method, and no longer passed in as an argument. Therefore, rename
the methods to create_diagram().

The docstrings of the two methods are adjusted accordingly.
Refactor to improve readability
Block: Split creation and formatting of diagram

Instead of passing formatting characters directly into
Block.create_diagram(), create the diagram using integer constants
to represent the semantic state of each node in the diagram.

Provide Block.format_diagram() for mapping the integer constants
onto a provided "legend", which provides the "graphical" (insofar
as ASCII-art can be considered such) representation of the various
states for each node in the diagram.

Also collapse Block._write() into Block.write(), since the latter
is equivalent to the former with default arguments passed.
MergeFrontier: Split creation and formatting of diagram

Instead of working directly with the formatting characters returned
from Block.format_diagram(), build on the semantic diagram returned
from Block.create_diagram(), and bitwise-or in additional constants
to represent the merge frontier semantically.

Then add MergeFrontier.format_diagram() to perform a similar mapping
of the semantic information into a "graphical" format. The end result
printed to the screen is identical across this refactoring.
Add ANSI coloring of diagram when outputting to terminal

Controlled with new diagram options --color and --no-color:

--no-color forces coloring off, else --color forces coloring on, else
we turn on coloring only if stdout is a tty.
Fix PPM output
Merge branch 'diagram-colors'

Add (optional) colors to the "git-imerge diagram" output.
Add --html=<file> for producing HTML diagram of merge frontier

When given --html=foo.html, a HTML file containing a table of the
current merge frontier is written to foo.html. The table contains
the classes needed to allow the accompanying imerge.css to render
it in colorful glory.
Verify that the two tips have exactly one merge base.

There might be a way to merge even in more complicated scenarios, but
for now limit ourselves to the more understandable case.
Restrict commits on each branch to the ancestry path with merge_base.

In a case like this:

o - 0 - 1 - 2 - 3 - 4    ← master
     \       \
      A - B - C - D      ← branch
           \     /
            X - Y

the old algorithm would give commits A,B,C,D for branch.  This is
obviously nonsense: it doesn't make sense merging commits that are not
descendants of the merge base.  So out of the --first-parent lists,
include only the commits that are on the ancestry paths.

Unfortunately, "git rev-list" does not work correctly if options
"--first-parent" and "--ancestry-path" are used together, so we have
to run the command twice and compute the intersection ourselves.
Merge branch 'ancestry-path'

Fix the computation of the commits on each branch to only include
commits on the ancestry path (i.e., descendants of the merge base).
README: Add some links to the documentation.

Add a link to the video of my presentation at GitMerge 2013 and to the
interview on GitMinutes about git-imerge.
Add some text from README.rst to the git-imerge docstring.