Restructure terrain class hierarchy.

`RigidBodyTerrain` is now an abstract class. `RigidBodyFlatTerrain` contains
the implementation that was previously in `RigidBodyTerrain`. This makes it
easier to handle the fact that `RigidBodyFlatTerrain` is a special
implementation, in that it can be pushed to Bullet.
Support non-flat terrain in collisionDetect.

As of this commit, non-flat terrain  as it was before, with the contact points
replaced by locations of any zero-radius spheres on the model.
Fix erroneous property in RigidBodyFlatTerrain
Add support for box/terrain collisions.
Merge branch 'collision-dynamics-integration' into terrain-integration
Rename terrain collision methods and add help text
BotVisualizer checks for RigidBodyFlatTerrain

It was checking for RigidBodyTerrain, which meant that it would error for
models with flat terrain.
Merge pull request #17 from avalenzu/terrain-integration

Gets us back to where we were with collisions against terrain (or a bit ahead, as now everything can collide with flat terrain).