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.
Could this be a std::array? If so, you can remove the `sizeof(vid) / sizeof(vid[0])` down below.