Fix Mac build.

- Virtual methods needs to go in the cpp files (Chromium style).
- <hash_set> is not standard thus in clang it's in ext/