re-implemented theme watch tasks, add parallel tasks, added ability to c...

...reate dynamic parallel targets
I thought about this, and here's my take on it.

As soon as we start defining entirely new tasks in Gruntconfig, we are taking the design intent of Grunt and layering on top a thick preprocessing layer that feels like it's gone too far. The difference is a silly slippery slope argument, but it's not that much more code to define this in your Gruntfile.js:

```js
grunt.config(['parallel', 'static'], {
    static:  "parallel": {
    "all": {
      "options": {
        "stream": true
      },
      "tasks": [{
        "grunt": true,
        "args": ["watch:css"]
      }, {
        "grunt": true,
        "args": ["watch:php"]
      }, {
        "grunt": true,
        "args": ["watch:js"]
      }, {
        "grunt": true,
        "args": ["watch:hughes"]
      }, {
        "grunt": true,
        "args": ["watch:validate"]
      }]
    }
  }
);
```
So I'm not sure what this option really gets you. I'll defer to @arithmetric on this, as I think he's got more of a vision on configurability.