Initial stab at the new feature

See also #1268 for the actual issue.

What it does:

 1. lib/grunt.js gRequire's lib/grunt/lang and adds it to the public API so one can for example lookup extensions a/o get a compiler from there and what not

 2. calling grunt.lang.lookupExtension('coffee') will 

 2.1 first try load all grunt-lang-* plugins on both the local node_modules search path and the global search path

 2.2 each plugin must implement a require.js module that will export a single function, lets call it 'register'

 2.3 tryLoadPlugins will try to require that module and execute the register function

 2.4 the register function will return a descriptor containing the language name, the version being supported, the provider and the extensions for which the plugins registers itself for, e.g.

```
{
    language : 'CoffeeScript',
    version : '1.8.0',
    provider : 'grunt-lang-coffee',
    extensions : ['coffee', 'litcoffee']
}
```

The register function will also be responsible for registering the language as an extension with node.

Example (minimal) layout of a grunt-lang-* plugin would then be

```
grunt-lang-coffee/
    package.json
    register.js
```


The benefit of such a solution would be that

 1. only those languages will be registered with the system that are actually required for by the build process, keeping overall load times at a minimum, which, of course would require changes to the prototype's way of loading the plugins, ideally it would first query for the descriptor and then call register if the extensions match

 2. the set of supported languages is extensible, so one could author a gruntfile using either CoffeeScript or IcedCoffeeScript or even TypeScript and support for new languages becomes as easy as adding a devDependency towards the grunt-lang-* plugins required
 
 3. Which version of the language to use is now the user's choice. I.e. adding a devDependendy towards grunt-lang-coffee@1.3.x would require coffee-script@1.3.x whereas a dependency towards grunt-lang-coffee@1.8.0 would require coffee-script@1.8.0 and so on.