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

resubmitted for PR361, rebase to current master.
Synchronization with passed object like this  is a bit scary since we are not sure whether the same object passed to the method.

If the intention is to protect operation read and update to the storage, may want to consider final object lock for the StorageDir class?