Add support for picking rasterized features from imagery layers

When you extend `Viewer` with `viewerEntityMixin`, and click on an entity from CZML, GeoJSON, etc., Cesium shows the entity's properties in an `InfoBox`.  This change extends that paradigm to work with rasterized features from imagery layers as well.  So, when you add a WMS layer and click anywhere within the layer's rectangle, Cesium now does a `GetFeatureInfo` request to the WMS server.  If the request comes back with a feature, its properties are displayed in the `InfoBox`.

Currently only `WebMapServiceImageryProvider` implements the new, optional, `pickFeatures` function that enables this to work, but other providers could gain the capability as it makes sense.

Here's some Sandcastle code to try it out (look for data in Australia):

```
var viewer = new Cesium.Viewer('cesiumContainer');
viewer.extend(Cesium.viewerEntityMixin);

var imageryLayers = viewer.scene.imageryLayers;
imageryLayers.addImageryProvider(new Cesium.WebMapServiceImageryProvider({
    url : 'http://geoserver.research.nicta.com.au/geotopo_250k/ows',
    layers : 'bores',
    parameters : {
        transparent : true,
        format : 'image/png'
    }
}));
```

Should this be an actual Sandcastle example?
Thanks, that's much nicer.  But it's dangerous, too.  If the `.then` callback throws an exception, it is silently ignored.  That makes it easy to write tests that seem to pass but actually fail catastrophically.  I ran into this because I structured my test like this:

```
var promise;
runs(function() {
    promise = whatever;
});

waitsForPromise(promise).then(function(result) {
    expect(result.someProperty).toBe(true);
});
```

The problem (now obvious) is that `promise` is passed to `waitsForPromise` as undefined.  But my test was passing because the exception thrown inside the `.then` callback was silently ignored.

I think the best way to defend against this problem is to pass the resolve/reject callback function to `waitsForPromise` directly, rather than using `.then`.  That way `waitsForPromise` can installer a reject handler as well and raise a failure with Jasmine.  Does that sound ok?