Keywords should shadow magic functions

This is a problem I discovered while working on #4151 with @fperez.

Before:

```
In [1]: def myif(line):
   ...:     print 'boo'
   ...:     

In [2]: ip = get_ipython()

In [3]: ip.register_magic_function(myif, magic_name='if')

In [4]: if foo
boo
```

After:

```
In [1]: def myif(line):
    print 'boo'
   ...:     

In [2]: ip = get_ipython()

In [3]: ip.register_magic_function(myif, magic_name='if')

In [4]: if foo
  File "<ipython-input-4-4533b1cb7f6e>", line 1
    if foo
          ^
SyntaxError: invalid syntax
```