changed updateMovement to createMovement which now doesn't have any side effects
changed PhysicsComponent::createMovement to return better looking diagonal values
added methods to component manager to ensure that no duplicate components are added, and that a max component limit is enforced.