Allow shaders to be outside VFS as well

Since it already does stat(), it doesn't seem like it should hurt.

Also makes it return "file missing" errors, which it wasn't before, and skip blank filenames in stat().

-[Unknown]