Ability to add WMS layers to different GeoAxes projections

The current WMS support in cartopy is limited to services that provide the data in EPSG:4326 (PlateCarree) and the layers can only be plotted in GeoAxes with a projection of PlateCarree(). This PR allows users to add WMS layers to geoaxes in different projections. It also extends the layer SRSs that can be used to include Google Mercator (EPSG:900913) and potentially more by adding mappings to an OrderedDict. Examples below.
 
```python
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

proj = ccrs.Orthographic(central_longitude=-120)
ax = plt.axes(projection=proj)
ax.coastlines()
ax.set_extent([70000, 5740000, 1330000, 5310000], crs=proj)

url = 'http://gis.srh.noaa.gov/arcgis/services/NDFDTemps/MapServer/WMSServer'
layer = '16'
ax.add_wms(url, layer)
plt.show()
```
![figure_1](https://cloud.githubusercontent.com/assets/1634089/4847976/cb74eb0a-6056-11e4-8bc5-886be4b66406.png)
(Note the data extends beyond the coastlines (see https://www.mapbox.com/mapbox.js/example/v1.0.0/wms/) 

and
```python
import cartopy.crs as ccrs
import matplotlib.pyplot as plt

ax = plt.axes(projection=ccrs.InterruptedGoodeHomolosine())
ax.coastlines()

url = 'http://vmap0.tiles.osgeo.org/wms/vmap0'
layer = 'basic'
ax.add_wms(wms, layer)
plt.show()
```

![figure_2](https://cloud.githubusercontent.com/assets/1634089/4847983/d6b50554-6056-11e4-9f94-91e9ae73c2de.png)

Suggestions for testing are very welcome.
@esc24 My expectation was that `_fallback_proj_and_src` would cache the fallback `proj` and `srs` for later use, but they are simply thrown away. Either that, or an exception is raised.

Wouldn't it be a better to have a stronger contract here for `validate_projection` such that it guarantees that either it raises an exception or the `WMSRasterSource` has a cache of the valid source `proj` and `srs` for the required `service`, `layers` and target `projection`?