Better grunt workflow using matchdep and extensions

@jackarmley This shouldn't break anything, but just have a once over and if it seems happy to you, merge it in~

NB. Now pulls in dependencies from package.json without having to call grunt.loadNpmTasks() 50x too. Yeah!