virtual vertex loader

This PR marks the vertex loader as virtual. It also splits the common functions into the base class, so a jit loader can also use them.

I'm not quite sure if the last commit is worth. Likely only if we add the m_current_loader as parameter for all loaders.
The code is specializing std::hash, the default hash function for an unordered_map.