widgets.patch: use super() where appropriate

Signed-off-by: David Aguilar <davvid@gmail.com>
xbase: use super() in __init__()

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.standard: add a DraggableTreeWidget class

The DraggableTreeWidget class allows drag-and-drop reordering of its
items.

Signed-off-by: David Aguilar <davvid@gmail.com>
widgets.patch: use DraggableTreeWidget

Adjust the base class to DraggableTreeWidget so that we can inherit its
ability to drag-and-drop reorder items.

Signed-off-by: David Aguilar <davvid@gmail.com>
git-xbase: use DraggableTreeWidget

Adjust the base class to DraggableTreeWidget so that we can inherit its
ability to drag-and-drop reorder items.

Signed-off-by: David Aguilar <davvid@gmail.com>
core: make decode(None) a pass-through

This will make it possible to run commands without capturing their
output.

Signed-off-by: David Aguilar <davvid@gmail.com>
core: allow specifying an encoding when calling run_command()

Signed-off-by: David Aguilar <davvid@gmail.com>
git: allow passing stderr and stdout when calling git commands

This allows us to control the stdout and stderr arguments to subprocess
when calling individual git commands.

Signed-off-by: David Aguilar <davvid@gmail.com>
git: do not double-decode

Avoid calling decode() twice when running git commands via
Git.execute().  Pass the encoding to run_command() so that the initial
decode() uses the right encoding and remove the redundant decode() call
in execute().

Signed-off-by: David Aguilar <davvid@gmail.com>
cmds: do not capture stdout and stderr when rebasing

Git prints a lot of information to the shell when rebasing.  Set stdout
and stderr to None so that Python passes stdout and stderr through to
the calling shell.  This makes it so that the in-progress prints from
`git rebase` is seen when doing e.g. `git cola rebase origin/master`.

Signed-off-by: David Aguilar <davvid@gmail.com>