Issue547: fixes pysh profile and creates pysh extension

This is my proposed fix for a very old issue: https://github.com/ipython/ipython/issues/547


So two issues, one is name collision, one is whether it belongs in ipython at all.  

Regarding the second issue of Does it belong in ipython?:

1. there's an open bug / broken code in master, at minimum the bug and related issues should be wont-fix not wish-list
2. if this extension doesnt belong in the main ipython distro.. well, does any extension? 
3. I've been avoiding newer ipython versions for a long time because of this bug (but now the draw of ipnb is too much)

I have no idea how common (3) is, but you're probably right it's not common.  Here's the thing though, re: (2) ipython already has support for stuff like the mixed-mode python/shell support like "x=!ls", so it clearly has some shell-related ambitions.  Why should the built-in rehashx make an alias for something like "apt-get" when the default input system can't use it correctly, etc?  It seems to me that all this functionality is a natural candidate that should be moved from core into the pysh extension so at least people are opting-in.  As for whether pysh stays in this repo or becomes a third-party extension I'm indifferent and willing to maintain it going forward either way.

Regarding the issue of name collisions, I planned on dealing with these on a per-case basis as I found them.  It's not difficult and the blacklist can probably mostly be built automatically.  Note that considerations of name collisions are already something of an issue for things like whether the user input references aliases vs python code, and in practice it's not very difficult to deal with.  Lastly IMHO since this is something that is only used when invoked with --profile=pysh, it doesn't seem like a big deal because users will certainly be aware they aren't dealing with vanilla ipython.