BUG: Ensure that set_geometry only applies a 'valid' (BaseGeometry)geometry column

Without this check, it is possible to do the following:

```python
df = GeoDataFrame({"A":[1,2,3,4,5,6], "B":[6,5,4,3,2,1]})
df.set_geometry("A")
```

This might not be the most efficient way to check, as it goes through the whole iterable item by item:
```python
all(isinstance(item, BaseGeometry) for item in level)
```