Overhauled Projectiles

Changed atom's bullet_act to call the projectile's on_hit, and changed most bullet_acts to call on_hit as well.  Removed some now-unnecessary snowflake code.

These changes will make projectiles which should effect non-mobs, such as the gyrojet and the ion rifle, work properly.  Inanimate objects can now be empulsed with the ion rifle, whose projectiles used to dissipate on hitting anything but a mob.  Gyrojets now explode on most objects, as opposed to just on walls and mobs, and the snowflake code that made them work on walls is no longer necessary.  The code for pulse rifles' breaking walls has been moved from a check in turf to a check in pulse beams, and has been expanded to include structures, allowing them to (slowly) break girders.  For coders, it means that on_hit is a reliable proc for the effect of a bullet's hitting an object.

While it does mean a number of needless procs of on_hit, it's not too much more proccing than is already done by the gun code, and the removal of the snowflake code that was used to mask the issue, such as the two checks every time a shot hit a wall, should mostly if not more than offset the extra procs.