DEV: Add support for logging tracebacks from interactiveshellapp

It's often frustrating working on IPython extensions designed for the html notebook (or in general, contexts where stdout of the InteractiveShell is not displayed), because if an extension fails to load due to an IPython error, the only message that appears in the logs is:
```
[IPKernelApp] WARNING | Error in loading extension: <extension_name>
```
This PR adds support for passing a logging function to `InteractiveShell.showtraceback`.  The function is called with a text encoding of the traceback.

The logging functionality is only used by `InteractiveShell.init_extensions`, but it's likely that other pieces of the `InteractiveShell` startup sequence would benefit from similar usage.