Change top level imports

This is a replica of #504 due to the dev model switch.

From #504 : 

Ok, so this contains a lot of stuff, some more controversial than others.

1) I removed the gui module altogether, I think it should be separate.
2) I chucked everything out of the top level namespace
i.e. you need to do this:

import sunpy.map
sunpy.map.Map(sunpy.AIA_171_IMAGE)

rather than this:

import sunpy
sunpy.Map(sunpy.AIA_171_IMAGE)

3) I made a new visualisation module for two reasons, 1 we will need it in the future, 2 it removed the mpl dependency from util.

4) I made the io module have optional deps for each file type it supports, i.e. you don't need pyfits to load a JPEG2000 file or the other way around.

5) I added a nice description of the new dep structure to the docs, which I copy below:

The Full set of requirements is:
numpy >= 1.6.2
scipy >= 0.10.0
matplotlib >= 1.1
pandas >= 0.10.0
astropy >= 0.2.0
suds
beautifulsoup4

To import SunPy core (including sun, time, util) you need the following dependacies:
numpy
scipy

Any submodules with extra requirements are listed below:
instr:
astropy.io.fits
matplotlib

io:
Optionally either of:
astropy.io.fits
openjpeg

lightcurve:
pandas
astropy.io.fits
matplotlib

map:
astropy.io.fits
matplotlib

net:
suds
beautifulsoup4

visualization:
matplotlib