Grunt Refactor

Previously contacted / mentioned to Joost and Peter regarding refactoring the Grunt setup here.

The main Grunt file then sets the key paths as variables, which are then available for use in the plugin. This makes the individual configs more re-usable across different plugins (or themes), keeps things modular to aid Git history and avoid merge conflicts, and allows different files to have different validation checks (i.e. JSCS can run over just the checktextdomain task with requireCamelCaseOrUpperCaseIdentifiers not set to true so it doesn't fail on the "text_domain" property, without sacrificing the quality of checks on all Grunt code).

The diff below is too vast to follow easily, so see the individual commits for further information and reasoning.

After pulling locally, you'll need to `npm install` to apply the package changes. All of the existing `grunt ...` commands are the same, except for `grunt csscomb` and `grunt cssbeautifier` which are now combined as `grunt wpcss`.