Git hooks for pre-commit, pull and rebase

Before each commit the default grunt task is executed. Only staged changes are considered, the unstaged changes are stashed and restored after the task has been executed.

After a pull or rebase the filenames in `hooks/data/update.json` are checked for changes and the corresponding command is executed if the file has changed.

The hooks are installed by calling `grunt githooks`, as postinstall step of `npm install` and also if `Gruntfile.js` has been changed remotely.

This PR also adds `load-grunt-tasks` so that calls like `grunt.loadNpmTasks('grunt-contrib-jasmine');` can be omitted.