Merge hierarchy store into Tachyon [TACHYON-33 sub-task 5 & 6]

Merge hierarchy store into Tachyon, which supports storing data on both memory and other storage(SSD HDD etc), client side and RPC interface are also modified accordingly

JIRA:
https://tachyon.atlassian.net/browse/TACHYON-38
https://tachyon.atlassian.net/browse/TACHYON-39
the worker does know where the block is, but it has to do the lookup job by querying StorageDirs one by one. 
in current implementation, the client just pass the location information from master to worker, and worker just uses the information as cache info, because the location information may be invalid: the block may be evicted and location change is not synchronized to master yet.  so worker first find the block from the location gotten from client, if it can't find the block, then do the lookup job.
based on out testing, for most of the time(we can say 99.9%) the information on master is valid  which helps worker avoid querying StorageDir one by one.