Vertex loader: reduce dependency on global state

Requirement to make VertexLoader more testable. Now it can be tested in isolation without requiring a NativeVertexFormat implementation and without having to setup fake global VAT stuff.

Still remaining (but not critical):
* Input/output memory regions are currently defined as globals in DataReader.h. Difficult to make non global in the current code.
* BBOX emulation stuff uses tons of globals, but really it should be out of there in its own module (SWRenderer has something called "VertexTransform" which sounds like a good place to implement BBOX and a software vertex shader).