Some fixes to Building.py

 Added functions to find the top and bottom of a SolidObject, plus bug fixes

Collision detection failed if an object did not collide with itself.
There is always a roof, not always a ceiling, but it was the ceiling
which added a SolidObject. This may have to be re-examined if and when
there are buildings without outsides.

It got to be a problem when I tried walking on the roof :-)