CM configurable Take 2

Pinging @fperez, 
This should fix your issues with markdown cell coloration. 

It is a little more complicated than I expected if we want to avoid code duplication in a few places, so I'll work on that.

-- 

Change the way configurability works.
Config dict should be passed down to the parent class where it will be
merged with the default value and propagate to this only in the base
class.

This allow to both alter the configuration on a per instance basis, or
globaly by tempering with the class instance.

This also get rid of IPython global in some cases.

-- 

Still not **perfect** but I think this is the limit of my js knowledge, there is a minimal amount of code of 4 line to propagate the configuration :

```
var options = {foo:bar}; // default options can be class parameter
var overwrite_options ={boo:baz}; // came from args, or not
options = this.mergeopt(CodeCell, options, overwrite options);
IPython.Cell.apply(this,[options]);
```

I'm just not found of passing `[option]` instead of just options and the squash the options dict together in a 3 step way...