Physics contact listener and other rigidbody stuff

Usage:
```
PhysicsListener listener = new PhysicsListener();
listener->onBeginContact = [](b2Contact* contact, GameObject* a, GameObject* b)
{
    //do stuff
};

//Add the listener to the world
b2World* world = new b2World(b2Vec2(0, 0));
world->SetContactListener(listener);
```

There is 4 events: onBeginContact, onPreSolve, onPostSolve and onEndContact.

I also added couple of other getters and setters to the Rigidbody class.