Less controversial code quality check.

Change pattern that are prone to error, like function redefinition
and other.

Same as #7216  but twice smaller. 

I stil believe we should do something like that sooner than later as the huge disparity of code style make it really difficult to use tools like jshint that report hundreds of potential mistakes. 

If this is still controversial, I can do almost each fix independently. 
This is used in `IPython.lib.demo`, by my search. Possibly we should get rid of that module, but not in a cleanup PR.