PlayerController now uses a more object oriented approach, all physics simulation values are stored in member vars.
I introduced more member functions to improve readability. Changes to the transform are now applied only after
collision checking.