Use .gittrees config file like a .gitmodules when pull or push
new commands: pull_all and push_all
A number of changes to push_all and pull_all:

* adding commands in "add" to populate the .gittrees file
* changing underscores to dashes (push_all -> push-all)
* changing commands to not be hardcoded to branch "master" from remote
* letting the user specify 0, 1, or 2 arguments to push and pull, like
normal "git push" and "git pull".  We'll try to look up missing
information from .gittrees, like git normally does from .git/config

Conflicts:
	.gitignore
	contrib/subtree/git-subtree.sh
merging change from nresni

manual merge at the moment...i'll try a proper merge next now that
formatting is cleaner

Conflicts:
	git-subtree.sh
Added check to ensure that split succeeds before trying to push
git-subtree.sh: add cmd_diff()

Original-Author: mhoffman <matt.hoffman@quantumretail.com>
Adding a "list" command

Original-Author: mhoffman <matt.hoffman@quantumretail.com>
Add from-submodule