Using Zero-Copy API to read

Replace all the byte array based API with Byte Buffer based API in the reading path to avoid byte array copy.
1.Introduce a Compatible layer to keep compatible with old Hadoop API
2.Make the whole read path use ByteBuffer directly

there could be a singleton in CompatibilityUtil.
```
public static final FileApi;
...
if (v21) {
  FILE_API = new V21FileApi()
} else {
  FILE_API = new LegacyFileApi()
}
```
And FileAPi would define all the available methods bellow.