Fixed collision detection when a bullet passes through a bot.

The algorithm uses the projection of the vector AB (from bullets
previous location to center of bot) onto AC (from bullets previous
location to new location). If the distance from the projection to the
center of the bot is less than the radius of the bot somewhere along the
way the bullet passed through the bot, resulting in a hit. If the
magnitude of this projection is greater than the magnitude of the
bullets vector then the bullet has not passed through the target
because the bullet has not yet traveled far enough.

Test cases have been added that describe the above.

Here's a graphic representation of the algorithm:

![projection](https://f.cloud.github.com/assets/696255/802070/c3e705a4-edb5-11e2-85d6-bffdd7c3d9f8.png)

This should be thoroughly reviewed.