game: implement joint proxies and joint naming

using raw Box2D joints is dangerous since they
might get destroyed when connected bodies are destroyed, thus
we introduce joint proxies, from now on everything (including scripts)
will be using joint proxies instead of raw joints. also, our
joints can have names, currently all joints present in RUBE level
are registered with names. joints that are part of a RUBE object are
not registered with names, those are private and we don't want them
to be exposed to scripts, etc.