Eviction/read/write changes

Abstraced eviction into a function that checks to see if a page is
modified before writing it back out.  Also adjusted when disk_read is
called so that we don't unnecessarily call it.