Modified to take custom git arguments

- made it multitask so user can specify own targets
- custom git submodule update arguments can now be used by defining an
option called `gitArgs` for your task target
- if `gitArgs` option is not defined, arguments will still fallback to
the original `"--init --recursive" + merge` one.
- if `gitArgs` option is `null`, no arguments will be used, which will
be just `git submodule update`