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.

Yeah, name is redundant. I'm also playing with a 'feature' option, where you can tag codepath that are use only for python 2.7 compat (or qt, pyside). The thing will warn you when you drop these feature that you get dead code.