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 It's a shame that this is essentially repeating the good work of the earlier `WMSRasterSource.validate_projection` call ...

If the valid source `proj` and `srs` was cached from `WMSRasterSource.validate_projection`, then we could easily detect that the native projection is not available and transform appropriately without essentially repeating this `try ... except` pattern ...