In addition to reducing duplication between IPython and RStudio - it also shields them from low-level details and creates an interface we could more reasonably generalize to something like qsubing the docker commands or using Docker Swarm.
Allow overiding galaxy_url directly (don't do this - use galaxy_infrastructure_url - but there will be deployments). Don't require setting older port range deployment options.
Rely on more Python and less on mako, setup a small shared common mako file in config/plugins/interactive_environments/common/ie.mako. Move ie.js into client/galaxy/scripts/galaxy.interactive_environments.js and extract IPython's require config out so it doesn't have to directly reference client/galaxy/scripts/galaxy.interactive_environments.js (I doubt it is where that file actually should be).
Setup a sample file and fallback on it if a materialized .ini isn't present. Use .ini instead of .conf for consistency with the rest of the config 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.