Fix the case where there are no valid or fixable polygons

Doing cascaded_union on a MultiPolygon that contains no
polygons turns out to give the error:

    django.contrib.gis.geos.error.GEOSException:
        Could not initialize GEOS Geometry with given input.

So we need to avoid doing the cascaded_union if there are no
polygons.  This commit also adds a doctest for this case.

This commit also ensures that we always return a MultiPolygon,
even if the result of the cascade_union is a Polygon.