Added IDataManager interface that defines the methods to write and read data to and from a particular data storage.  MemoryDataManager implements this interface, and is responsible for writing and reading data from the main memory.  RegisterDataManager also implements this interface.  It is responsible for writing and reading data from a register.