Ignore material update when no vertex color, softgpu vertex preview

I think it makes sense, and it fixes Blade Dancer.  I thought it'd be wrong but from what I can tell with 3dstudio on a real PSP, it seems to be right... but I'm having trouble building a working reduced test case.

There's some refactoring here to avoid having duplicate code.

-[Unknown]