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

resubmitted for PR361, rebase to current master.
This is not safe.  `containsKey` is atomic, so is `get`, but calling contains then get isn't, so the block may be removed before get is called, which would return a NPE.


Until java 8 (;_;) you need to restrict nulls in the map and do get then check for null.

```java
Long value = mBlockSizes.get(blockId);
if (value == null) return -1;
else return value;
```