Split gruntfile into smaller task and option files

Very similar to what was previously proposed by @ptibbetts, but hopefully a little better arranged and documented. 

I've not bundled the watch task like he did, nor have I created a standalone watch task like what exists right now. Users can just run grunt watch to call the file directly.

I've also expanded on var = config slightly by putting in a single example path variable, that we can use to make paths more dynamic. Eg, in less.js we specify the filepath directly, but could easily replace assets/ with <%= path.assets => and even define vars for each dir if needed.