Add IPython Notebook and JSON datatypes

Based on work from Bjoern and Eric. Made some modifications to ensure they do not attempt to read all of very large files and added a configuration option that must be enabled to use fancy notebook viewing.

To enable fancy notebooks one also needs to - `pip install jinja2 pygments ipython` into Galaxy's virtualenv.
Move the IPython port range stuff into socket util.

Should be possible to use this - but not a ton reason with the dynamic proxy.
Split interactive_environments out into their own plugin directory.

Pragmatically this allows visualizations to be enabled by default but not IPython stuff and provides a spot to put a warning about security issues. More abstractly I think it provides a nice separation (initially though superficial) between these plugin types.