Added some missing notify signals to Box2DWorld
Cleaned up a lot of duplicate code in the joints

All joints stored a pointer to the Box2D joint, which has now been moved
up to the Box2DJoint base class. As a result the cleanup code and part of
the creation code could be moved up as well.

Some common bugs were fixed in the process:

* Missing 'return' in Box2DDistanceJoint::dampingRatio
* Missing 'return' in Box2DFrictionJoint::localAnchorA
* Missing 'return' in Box2DFrictionJoint::localAnchorB
* Missing 'return' in Box2DPulleyJoint::groundAnchorA
* Missing 'return' in Box2DPulleyJoint::groundAnchorB
* Missing 'return' in Box2DPulleyJoint::localAnchorA
* Missing 'return' in Box2DPulleyJoint::localAnchorB
* Missing y-inversion in Box2DFrictionJoint::localAnchorA
* Missing y-inversion in Box2DFrictionJoint::localAnchorB
* Missing y-inversion in Box2DMotorJoint::linearOffset
* Missing y-inversion in Box2DPrismaticJoint::localAnchorA
* Missing y-inversion in Box2DPrismaticJoint::localAnchorB
* Missing y-inversion in Box2DPulleyJoint::groundAnchorA
* Missing y-inversion in Box2DPulleyJoint::groundAnchorB
* Missing y-inversion in Box2DPulleyJoint::localAnchorA
* Missing y-inversion in Box2DPulleyJoint::localAnchorB
* Missing y-inversion in Box2DRevoluteJoint::localAnchorA
* Missing y-inversion in Box2DRevoluteJoint::localAnchorB
* Missing y-inversion in Box2DRopeJoint::localAnchorA
* Missing y-inversion in Box2DRopeJoint::localAnchorB
* Missing y-inversion in Box2DWheelJoint::localAnchorA
* Missing y-inversion in Box2DWheelJoint::localAnchorB
* Missing y-inversion in Box2DWheelJoint::localAxisA
Fixed crash in World destructor

After the b2World instance has been deleted, Box2DJoint should not still
try to destroy the b2Joint instances. To avoid this the pointers are
nullified when deleting the world.
Fixed FrictionJoint never using automatic anchors
Set the user data pointer in the body/fixture definition

It's copied from there, so then we don't need to call SetUserData.
Removed the Joint.world property

There seemed to be no reason for setting this property at all, because
before a joint can be created it first needs two bodies from the same
world. It should just use the world that those two bodies belong to.

The only reason a b2World pointer is still present is for convenience.
Use qFuzzyIsNull instead of comparing to 0 with qFuzzyCompare
Optimized and fixed joint properties

* Simplified and inlined getters when the properties are never modified
  by Box2D
* Added missing scaling in DistanceJoint.length getter
* Fixed FrictionJoint.maxTorque setting the MaxForce when the joint is
  already created
* Check FrictionJoint.maxForce and FrictionJoint.maxTorque for validity
* When the PulleyJoint is not yet created, return the starting lengths
  from getCurrentLengthA and getCurrentLengthB instead of 0
* Check GearJoint.ratio for validity
* Fixed MotorJoint.angularOffset to be properly inverted
* Fixed change notification signals of MouseJoint properties
* Fixed conversion of PrismaticJoint.motorSpeed
* Fixed conversion of WelfJoint.referenceAngle in getter
Introduced toBox2DBody inline convenience function

Makes code more readable.
Renamed anchorsAuto to mAnchorsAuto for consistency
Made it possible to change Joint.bodyA/bodyB

Changing either body of a joint will now cause the joint to be
re-created. Unsetting either will cause the Box2D joint to be destroyed.

The 'mouse' example has been simplified accordingly.
Added b2JointDef reference to Box2DJoint base class

This allowed introducing a Joint.jointType property and using
b2JointDef::collideConnected directly instead of having
mCollideConnected. The latter also made sure that collideConnected
defaults to true for the PulleyJoint, as it does in Box2D.
Allow dynamically changing GearJoint.joint1/joint2

Also checking the type of the joints now to make sure they are either
RevoluteJoint or PrismaticJoint.
Added conversion functions and used them everywhere

For converting between pixels/meters and radians/degrees. They also do
the inversion of the y-axis and the rotation.

I tried not to change any existing conversion in this commit, but it
still fixes missing y-inversion in Box2DPulleyJoint::localAnchorB and in
all getReactionForce members.