Added standard Friend Assembly

Now we can go back to making everything internal that should be.
Made loads of things internal

Pretty much everything that can be internal is now. It's pretty academic
at this point, but thought we may as well.
Also added IGravitySimulator, and validated a couple of parameters
before using them.