Getting closer! I've just made one of those annoying realisations
that make your code better but require un-doing some wokr that
has just been done.

I want to make the type system 3 items long again so it will go
(principle-type array-length place-p)
e.g.
(:int nil t) is an int var which can be setf'd
(:float 5 nil) is a float array which is 5 long and cannot be set

It will mean that the setf special function can now just be a
standard function, ergo the function defun is better.

Ahh well, best get to it!