Projectile hooks

This PR adds two hooks that get called when a projectile hits an entity or a block. If the callback function returns true then the projectile will fly through the block/entity.