Try to make deprecation/Provisionality moar 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.