Test basic 3D textures functionality

This is only testing texStorage3D and texSubImage3D validation. No rendering check is performed. Still, getting this test to pass involved correctly expanding our textures state machine and validation logic to support 3D textures, which was already a bit of work, so I thought that this was worth checking in if only as a starting point.

The ceil -> floor fix is intentionally rolled into this patch. Just something I noticed while pasting this code into the new 3d textures test. It doesn't matter at the moment because it only tests power-of-two sizes, but it would otherwise matter.