- Added 'commit' command to commit changes to student repos
- Added 'push' command to push commits to student repos
- Retry clones that fail with 'Connection reset by peer' using exponential backoff
- Offer to create GitLab group in `assigner init`
- Version configuration; automatically upgrade old configs to latest version
- Make GitLab backend configuration generic
- Tidy up progress bars with logging output
- Test all supported python versions (3.4-3.7) automatically
- Added `BackendBase`, `RepoBase`, `StudentRepoBase`, and `TemplateRepoBase`.
- Base Repos are now called Template Repos.
- Separated Gitlab backend from most of the code. Added Base implementations for Gitlab.
- Added `requires_backend_and_config` decorator with backend config option to load the desired backend.
- Renamed `config_context` decorator to `requires_config`.
- pyflakes 1.6.0 upgrade for type annotations fixes.
- Improved canvas error handling.