First step of refactoring map.

Subtraction and operator overloading in general needs attention.
Does * / + - make any sence on a map? or should they only be allowed on
map.data?
no operators
The first MapBase / GenericMap split
Class splitting
Added basic factory for map and set up the list of potential loading patterns for the argument string.
Added factory base to util and fixed a spacing issue
Sketched out read_file function
Made it so existing maps were not forgotten to be returned.
Import tweaks and goodbye make_map
Cleaned up some goofy spacing.  Removed unnecessary extra class and made
it so Map will actually call.
Merge pull request #1 from rhewett/map_refactor

Map runs now.
small tweaks now processes args
Changes to RegisteredFactoryBase
random changes to factory and cube
Added FileHeader and turned MapHeader into OrderedDict

Currently the Map meta object Meta is not case-insensitive.

I put the contents of MapHeader into FITSHeader working on the
principal of that is where the output case-insensitivity needs to be.

However people will expect that if they build a Map from a MapHeader then
they will expect its header to act like a FITSheader and be all Caps or
case insensitve. Above and beyond this all of Map is coded atm to use
lower case keys because they will be uppercased on read to MapHeader
which is no longer happening.
io header
stray changes
Refactored io header and map meta data

Removed deriivaties of file header all files supported by io must
return a deriv of FileHeader.
Also wrote a little wrapper around pyfits.write_to() for fast output.
Merge branch 'map_refactor' of github.com:Cadair/sunpy into map_refactor
Header changes and adding a io.write function