Refactor ExternalAppendOnlyMap to take in KVC instead of just KV