make deprecation more explicit

Just playing around a with decorator to mark deprecated feature and have an option that woudl actually make them Warn or raise if used : 

```
In [3]: ip = get_ipython();ip.config._merge({'z':3})

In [4]: from IPython.utils import deprecate; deprecate.nocompat=True

In [5]: ip = get_ipython();ip.config._merge({'z':3})
---------------------------------------------------------------------------
DeprecationWarning                        Traceback (most recent call last)
<ipython-input-5-4b0aa8f46ac3> in <module>()
----> 1 ip = get_ipython();ip.config._merge({'z':3})

/usr/local/lib/python3.4/site-packages/IPython/utils/deprecate.py in _raise(*args, **kwargs)
    130             def _raise(*args,**kwargs):
    131                 if _comp(version) or nocompat:
--> 132                     raise DeprecationWarning('This is a deprecated feature, it will eb removed after %s ' % str(version))
    133                 else:
    134                     return func(*args,**kwargs)

DeprecationWarning: This is a deprecated feature, it will eb removed after (4, 0, 0)
``` 

Also once we bump IPython version above the limit for the deprecation. The thing will raise even earlier to remind us that there is something to clean up. 

From a discussion with @ogrisel yesterday in the train. And about the fact that numpy turn their deprecation warning as real error during testing to ensure they don't usetheir own deprecated apis.

That 1) to get a block to indent in a scope to get visual distinction. And 2) to either raise early (like IPython launch when we bump version, and to raise warn on usage if someone target the code.