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

resubmitted for PR361, rebase to current master.
@hsaputra 
the while loop here means : if no StorageDir has enough space for the request size, continue the loop. in the loop,  first check if there is any block that can be evicted among all StorageDir candidates. if there is no block can be evicted, return null which means it fails to allocate space, else adding the block into eviction list, and check if the StorageDir has enough space, return if true, else continue.