Make a map from an EPSG code.

This is one route to enabling [EPSG codes](http://www.epsg.org/) to automatically create the appropriate definitions in Cartopy. It defines a generic `Projection` subclass which is parameterised by proj.4 init string and area of validity.

NB. It makes use of http://epsg.io/ to obtain run-time dynamic definitions of EPSG codes in terms of proj.4 strings and the area of validity. Access to this website is defered to a spin-off package: [pyepsg](https://pypi.python.org/pypi/pyepsg).

-------------

An alternative (or follow-up) to this route would be to add the concept of a "Map". A `Projection` would then just have:
 - the numerical transformation,
 - the boundary set to the maximum range of coordinates over which the transform is defined.

A `Map` would restrict the boundary of a `Projection` (and possibly a `CRS`) to a particular region of interest.

We could then define translations from proj.4 init strings and projections (and vice versa), and from EPSG coordinate systems to maps.

NB. In this model the `OSGB` class would cease to be a `Projection` and instead would be a `Map`.
Good spot. Originally the constructor took the init string and the bounds so I stayed away from the literal syntax `Class(arg1, arg2, ...)` and went for the abstract `<class: stuff...>`. But with the rename, etc. I've no objection to switching to `EPSGProjection(code)`.