Added timer
Have been doing some major refactoring work on the cartridge code to
support MBC's, which is still probably wrong but MBC0 and MBC1 are now
(somewhat) functional.

As a result of this I have been able to run the blargg CPU test ROMS to
test out the validity of my CPU implementation. Quite a few tests were
failing so I spent a considerable amount of time debugging to find the
instructions that were wrong. Thankfully not too many but it took a
while to fix them.

Now 10/11 of the blargg cpu tests pass (!) which is quite an
achievement. The failing test is to do with interrupts which are not
fully implemented yet.

With most of the tests passing, it's still a mystery why some games are
getting graphical glitches all over the place. Tetris just about works
but there are still some problems to iron out, so this suggests to me a
GPU bug or something to do with timings....might need to investigate.