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


A data point on this: I've used assignment from the `!` operator for creating devops-ey workflows in IPython Notebook.  It's nice for being able to do write cells like:
```
for ip in my_server_ips:
   foo_procs = ! ssh user@{ip} ps | grep -i "foo"
   # Do something with foo_procs
```
and in general I find it useful to be able to interactively assign from shell pipelines.