implement enums for instructions
moved decode into it's own module
attempted to macro-tize the decode match

Rust only supports macros that actually expand to a full valid
statement, expression, etc. I tried to add a macro that would make the
alu op matching super easy to write (and I would have extended the idea
to other sets of instructions), but alas, it did not work.
started cpu run
combine redundant decode and decode_impl

This was bothering me all day.
Merge branch 'master' into cpu
attempting to wrangle memory reading
get mem to the cpu

I think I finally figured out for now how to get the Mem component into
instruction run so that they can read memory
More memory stuff
remove types.rs
read in more of the rom
general cleanup
start generating ctags
fixup ownership, start logging

build out how components own each other
add internal memory to mem module

This adds the buffers for the NES's physical ram and adds some good
documentation for the NES cpu memory map, which I'm sure I'll refer to
more.
begin implementing memory map

This checkin introduces the idea of the NES CPU Memory Map into the mem
module and exposes read functions to the cartridge ROM.
random cleanup, began memory read phase

I need to throw all of the enum variants for AddressMode in the using
statement, which seems like some bullshit
change ram from three buffers to one

I always do this. Zero Page, Stack, and RAM are three sections of one
contiguous RAM. I always make them three buffers at first and do the
address decoding to get the right array indices, then I remember I don't
have to. Re-implement as a single 2KB buffer and get rid of the address
decoding.
implemented the addressing modes

Wrote a function to get the memory address for each addressing mode.
This address can be read from or written to depending on the language.

Todo: figure out the imm/rel stuff
Thanks to Cole for the 0x7FFF fix.

That would have been annoying. I'm gonna start implementing test
finally!