Added some comments, made Point:normal handle 0-length vectors