This add cycle times to the emulator. I did some initial research in
docs/CYCLE_TIMINGS.md. There are a few differences between the online
documentation around cycle times. I tried to find the most accurate
cycle timings possible.
In terms of implementation, I tried a few ideas and landed on calculating the cycle times when executing the instructions. That's pretty much what other emulators also do (olcNES in C++, bugzmanov/nes_ebook in Rust, NES-rust).
Things I took into account:
- Base cycles
- Page crossing penalties
- Decimal mode (65C02)
- Address space wrapping
Fixes: #119