Make it work without Github

This PR intends to make modulesync more generic. It changes the following:

* Allow to set `git_base` in `modulesync.yml` to set a Git base instead of `git_user`, `git_provider_address` and `namespace`. This allows for more generic URI.
* Allow parameters for modules in `managed_modules.yml`. In order to do that, `managed_modules.yml` can now be either an array (compatible mode) or a hash with options. One option is passed so far (`:remote`), which allows to synchronize modules with completely different git bases (on different Puppet masters for example). E.g.:

```yaml
---
foo:
  :remote: 'git@puppetmaster1.example.com:/etc/puppet/modules/foo'
bar:
  :remote: 'git@puppetmaster2.example.com:/srv/puppet/bar'
```

* Fix support for custom branch, which wasn't working since `Git#pull` and `Git#push` were called without this parameter