Abstract weapons a bit to make it easier to have multiple types

Right now this abstraction is pretty leaky. However, as we get an inventory
system and add weapons it should get better.
this fixes the problem of 'self hitting'.

Occasionally while the graned was 'launching' it would hit the players
body and self destruct, because the collisions where at zero though it
was unarmed. This fixes that problem by not allowing a granade to
explode until it has more then one collision or zero collisions and
the target is not the saem player that launched it.
minor refactoring and cleanup