Uses actual battlefield size, rather than 800x600.

Changes to ProjectedBot and VirtualBullet to use state.battleWidth and
state.battleHeight where appropriate (instead of 800 and 600).
Changes to BulletWave, VirtualBullet and OtherRobot to pass state through to
VirtualBullet.advance().