Physics refactoring

Major changes in this PR:
Refactoring of the physics code, such that is is possible to have different physics engine implementations without removing an existing one.
There should be no notable differences in behaviour of the code.

For details: read the new documentation. Starting in the package-info.java

This request is not fully done yet, but I'm posting it in the hope of getting some feedback.
Codewise there are only a few minor things left to do, marked with a TODO tag.
Documentation still needs some polishing.
Other than that I should rebase the whole thing and create a proper commit message.

ps. Netbeans commits my code using my windows account name to identity me. Administrator wont be there after the rebase (I hope).