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.
I'm confused by this change. It looks like you have removed the checking for script changes in the case of only reading from the network. I can see that you still have it in the "Update" case, but that will only fire for local changes.

The following repro case needs to be tested:

1) Machine A is viewing the scene.
2) Machine B is viewing the scene.
3) On machine A, change the script of an entity. - you should see the EntityScriptChanging code run on machine A.
4) On Machine B, which is viewing the scene should also see the EntityScriptChanging code run. 

I believe that with your changes step 4 will not occur, and Machine B which is just viewing will not see the script change. This will result in unload/preload code not running and will also result in the script not changing for viewers who didn't directly edit.