Test case imporved with addition of write

Couple of Issues to ponder about(added to the issues list in github)
1. Same cache line cant be present twice in the a cache set. (once in Invalid and once in Shared state).
   Need to modify the search function. Can't treat an invaid block as an absent block.
2. What to do on eviction is still open.
   Shoud I write back to memory on an eviction of a block in SHARED state?
   If not, should I write back to memory when a blocks state changes from MODIFIED to SHARED?