changing the way 'bounds' is implemented to match shapely

This PR is more of a conversation starter than anything. In some of the work I'm doing, it is useful to have a GeoSeries return the same thing as a similar call to a shapely BaseGeometry object. For example, future spatial operations will likely utilize bounding boxes to filter out non-overlapping geometies. Since the user might want to overlay a single BaseGeometry, or another GeoSeries, it would be useful to have `obj.bounds` return a bounding box tuple, regardless or what that object is. This would avoid having to write something like this every time:

```python
if isinstance(other, BaseGeometry):
    other = other.bounds
elif isinstance(other, GeoSeries):
    aggregator = dict(minx=np.nanmin, miny=np.nanmin,
                             maxx=np.nanmax, maxy=np.nanmax)
    bbox = other.bounds.groupby(lambda x: 1).agg(aggregator)
    other = tuple(bbox.values[0].tolist())
```
I could see this coming up in other contexts as well. For instance, the user might want `area` to return the area of the *entire* GeoSeries, or they may want `buffer` to return a single buffered geometry for the whole GeoSeries. While both can be accomplished by a single additional call, it may be nice to provide shortcuts to these common operations, or provide an API that is closer to what one would expect from using shapely?

```python
tot_area = obj.area.sum()
sing_buff = obj.buffer(.5).unary_union()
```

What about exposing the individual methods in addition to the property (with a `geo_` prefix for all methods):

```python
def geo_buffer(self, distance, resolution=16, by_geom=False):
    geom = GeoSeries([geom.buffer(distance, resolution) for geom in self],
                         index=self.index, crs=self.crs)
    if by_geom:
        return geom
    return geom.unary_union()

buffer = property(geo_buffer) # Similar to shapely (return single geometry)
```
Note: the naming conventions I've used here are not necessarily ideal. Perhaps something like `element_*` or `geom_*`  for the element-wise operations (and the short names for the Series operations). Conversely, maybe we want to do the 'opposite' to shapely, and have element-wise operations take on the short names, and the Series-based operations take on a `all_*` or `series_*` prefix?