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
there are some problem with this logic:
1. mIdToAvailableSpaceBytes does not get initialized with the StorageDir's capacity
2. because of the above, the first time you call it, availableSpaceBytes would be null, and thus avialableSpaceBytes is always the same as toRequestSpaceBytes
3. and thus  the following line would always associate storageDirId with size 0.

mIdToAvailableSpaceBytes.put(storageDirId, availableSpaceBytes - requestSpaceBytes);

4. in addition I dont quite understand this logic

if (availableSpaceBytes != null) {
+            availableSpaceBytes += toRequestSpaceBytes;
+          }