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
Use a 'visible' \r as carriage return

merging change from nresni

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

Paul Campbell: Original commit also replaced an invisible ^M carriage
return, but other cherry-picked commits replaced that but didn't finish
the job as this commit did by passing the -e to say/echo to correctly
recognise the \r.

Signed-off-by: Paul Campbell <pcampbell@kemitix.net>
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