Support more shader uniform types.

Added support for 2D and 3D vectors as well as 2x2 and 3x3 matrices.
yay for macros!