Don't worry, i'm not planning on touching anything on my own

One thing that has occurred to me looking at the mesh structure - I'm not sure that it really deserves to be a Primitive/Shape - although I can see the sense in it with the original PBRT implementation.
Correct me if i'm wrong, but currently though it seems that it gets refined before it's ever used (different to PBRT) as a Shape/Primitive - so it's bound functions don't get called, it's not intersected - it's really just a storage class for vert and face data, as well has having material/medium properties.
One option might be to create a new storage class for this situation and then create the Primitives elsewhere (like in the CreateShape function).
Not sure it's worth the effort though, and it would be a break with PBRT which isn't my preference. Maybe I should have some more coffee.