add perspective projection and fix some glaring matrix/vector bugs.
Still not sure I've got the right kind of semantics for the homogeneous w-coordinate's behavior with operator overloading etc.