Bullet physics part 1

Adding Bullet as optional physics engine. Bullet is not required -- the build will work without and everything should work as normal.  If Bullet is found then a Bullet simulation will be used for entity collisions, however only two shapes are currently supported:  boxes and perfect spheres.

The main purpose of this PR is to merge some work that has been in progress for a couple months, in preparation for more.  

The noteworthy bits are:

(1) Bullet is optional -- the build should work fine without it and everything should work as normal.

(2) If Bullet is found then a Bullet simulation will be used only for entity collisions, however only two shapes are currently supported:  boxes and perfect spheres.  There is no support yet for avatar collisions in Bullet.

(3) Some of the legacy physics stuff has been moved back into the shared lib temporarily until it can be removed entirely.  This has been done so that entities lib doesn't depend on physics lib -- instead physics depends on entities.  Eventually all ray-trace and collision checking will be done by Bullet and we can remove our basic shape and ray-trace implementations.
Oh right.  That is a stub implementation of ObjectMotionState for the case where Bullet is not found.  I want ObjectMotionState class to be known for that case because I have other classes that have lists of them that I want to be compiled even when Bullet is not found.  I gave the stub a single useless data member just so the class is not empty.  I can call it whatever, since it isn't used, but I'll change the name to be less mysterious.