Add storage dir and eviction strategy [TACHYON-33][SubTask 2 & 3]

resubmitted for PR361, rebase to current master.
@dcapwell 
In StorageDir code, I have merged all the "check-then-set logic" into one call, but I still want to keep this interface, allowing other modules to query whether certain block exists in the StorageDir.