Several optimizations and speed improvements.
cstubs: Use Matrix type instead of float[4][4].
diff --git a/Modules/cstubs b/Modules/cstubs
index d8f2d90..7e99a82 100644
--- a/Modules/cstubs
+++ b/Modules/cstubs
@@ -529,21 +529,21 @@
 	object *self;
 	object *args;
 {
-	float arg1 [ 16 ] ;
+	Matrix arg1;
 	object *v, *w;
-	int i;
+	int i, j;
 	getmatrix( arg1 );
 	v = newlistobject(16);
 	if (v == NULL) {
 		return err_nomem();
 	}
-	for (i = 0; i < 16; i++) {
-		w = mknewfloatobject(arg1[i]);
+	for (i = 0; i < 4; i++) for (j = 0; j < 4; j++) {
+		w = mknewfloatobject(arg1[i][j]);
 		if (w == NULL) {
 			DECREF(v);
 			return NULL;
 		}
-		setlistitem(v, i, w);
+		setlistitem(v, i*4+j, w);
 	}
 	return v;
 }
@@ -559,7 +559,7 @@
 	object *self;
 	object *args;
 {
-	float arg1 [ 4 ] [ 4 ] ;
+	Matrix arg1;
 	object *v, *w;
 	int i, j;
 	getmatrix( arg1 );
@@ -742,7 +742,7 @@
 	if (packed == NULL)
 		return NULL;
 	parray = (unsigned long *) getstringvalue(unpacked);
-	p = getstringvalue(packed);
+	p = (unsigned char *) getstringvalue(packed);
 	for (y = 0; y < height; y += packfactor, parray += packfactor*width) {
 		for (x = 0; x < width; x += packfactor) {
 			pixel = parray[x];