Define `--message`|`-m` for Merge

Allows passing a merge message in from `scc merge`.
This should make the command more generally useful
since long esoteric message won't be used.
Add UpdateSubmodules command

Due to the complexity of rmerge and co., a new command
with a similar signature to `scc merge` is preferred for
updating all submodules.

The idea is that for this to work, one must only change
to the appropriate branch, and run

    `scc update-submodules BASE`

All of the submodules will be fetched and checked out to
the appropriate base, then a single final commit will be
added.
Refactor GitRepository reset() method

The reset() method is now called outside the __init__() method and uses
`git reset --hard HEAD` on the top repository only. All submodules pointers
are updated using the `git submodule update --recursive`.

This change allows `scc merge -Dnone master --reset` to update the submodules
Add has_local_changes() method and remove "--allow-empty" option
Merge pull request #2 from sbesson/auto-submods

Allow to use `scc merge` for submodule update
Create abstract class for all scc commands acting on git repos

- Move main repository intialization (incl. submodule registry, reset and status reading), add_new_commit_args() and push() to this new abstract class
- Use GitRepository rmerge() method for the update-submodules command. Note the updated boolean has been dropped during this change since the logic checking local changes has been moved to rmerge(). This means --push can now be called even if the SHA1 is unchanged.
Merge pull request #3 from sbesson/auto-submods

Fix `scc update-submodules`
Fix GitRepository initialization in Rebase command
Merge remote-tracking branch 'origin/master' into auto-submods
Fix GitRepository initialization in various commands
Merge pull request #4 from sbesson/auto-submods

Fix GitRepository initialization
rmerge() now returns an updated status boolean

With the --push option toggled, the HEAD resulting from `scc merge` or `scc update-submodules` are only pushed to Github if this updated status is True.
Merge pull request #5 from sbesson/auto-submods

rmerge() now returns an updated status boolean
Merge pull request #47 from joshmoore/auto-submods

Auto submod updating