Make IPython extension optional.

Part of #594.

I wondered about catching all errors rather than just SkipTest - what do you think? (Also, feels odd to be importing unittest here and elsewhere, but I guess lots of nose importing has been happening so it's not too bad...)

Not sure about the message, too. (Could maybe print out the caught exception instead?)