Refactored shot code

All shots now inherit from EntityShotBase, removed a crapload of
redundant coat, cleaned up the methods, added tons of comments.