feat(grunt-bower-release): support variety of options for tagging versions

This commit adds several new configuration options, which still require documentation in README.md:

- overwriteVersion: will overwrite a single version tag
- removeVersionTags: will remove all version tags which begin with the pattern of the current version
- suffixTagWithTimestamp: suffixes the created tag version with a timestamp value

So this provides a few extra options to play with.

This commit also refactored a number of things, by adding a dependency on Vojtajina's node-di module
in order to simplify testing certain things, and an explicit dependency on caolan's async module, as
grunt.util.async has been deprecated.

Closes #40
Merge branch 'master' of github.com:caitp/grunt-bower-release into feature/gbr-41

Conflicts:
	Gruntfile.js
	tasks/bower-release.js
fix(grunt-bower-release): failing task if there any issues with git