Tweaks to submodule handling

Add a `git submodule sync`. This allows for the user to change the
origin URL of the submodule and propogate that to change to all hosts.

Change submodule update to not use submodule foreach, which shouldn't be
needed (and also didn't work in my set up).

And an --init to the submodule update call to catch any newly added
submodules.  This is harmless for already init'd submodules.
Add special check type ANY to validhosttype
Add remote execution options

Added -c and -g options to run a remote command on all known hosts.
The two are identical except -g will only run on git configured hosts.
Using -g does *not* automatically preface the command with 'git'.

Useful for debugging, or performing arbitrary tasks across all
machines that is not otherwise provided by dotsync.

Trivial example, to see the local date on all hosts:
  $ dotsync -c date

Longer commands must be quoted:
  $ dotsync -c "git describe"

Arbitrarily complex commands and pipelines work fine too:
  $ dotsync -g "git update-index -q --refresh &&
      git diff-index --quiet HEAD || echo Uncommitted changes\!"

Both options will honor the -H argument if present.
Merge branch 'remote-shell' into develop
Merge branch 'submodules' into develop