Implemented ObserverSpy and more PunchCardModelImpl

Implemented ObserverSpy by TDD
Added more functionality to PunchCardModelImpl