Move event counter to its own file

It's getting big...
event counter: keep track time spent in game logic

Does not include time spent waiting for hardware.
game: Count time spent in game logic

Per-loop stats, averaged over 500 loops:
- Collision checks: 272
- Duration calls: 0
- Movement calls: 64
- Loop time in ticks: 33
- Game logic section 0, time in ticks: 0
- Game logic section 1, time in ticks: 7
- Game logic section 2, time in ticks: 0
- Game logic section 3, time in ticks: 1
- Game logic section 4, time in ticks: 0
- Game logic section 5, time in ticks: 0
- Game logic section 6, time in ticks: 5
- Game logic section 7, time in ticks: 9
- Total game logic time in ticks: 25
game: Use custom shield struct instead of bool array.

Game data size is still 1331 bytes, thanks to bitfield packing.

Per-loop stats, averaged over 500 loops:
- Collision checks: 273
- Duration calls: 0
- Movement calls: 63
- Loop time in ticks: 32
- Game logic section 0, time in ticks: 0
- Game logic section 1, time in ticks: 7
- Game logic section 2, time in ticks: 0
- Game logic section 3, time in ticks: 1
- Game logic section 4, time in ticks: 0
- Game logic section 5, time in ticks: 0
- Game logic section 6, time in ticks: 5
- Game logic section 7, time in ticks: 5
- Total game logic time in ticks: 20

(Down from 25)
Alien: call movement() with displacement instead of speed

This way, the displacement is calculated only once.

Per-loop stats, averaged over 500 loops:
- Collision checks: 263
- Duration calls: 0
- Movement calls: 63
- Loop time in ticks: 17
- Game logic section 0, time in ticks: 0
- Game logic section 1, time in ticks: 2
- Game logic section 2, time in ticks: 0
- Game logic section 3, time in ticks: 0
- Game logic section 4, time in ticks: 0
- Game logic section 5, time in ticks: 0
- Game logic section 6, time in ticks: 5
- Game logic section 7, time in ticks: 5
- Total game logic time in ticks: 14

(down from 20)
Convert fixed point math to use shifts

Might help with compiler optimization.