make type tree determination independent from cursor
make type tree determination independent from cursor

for example, do not look at the first array element to obtain
type information, because the cursor may be pointing to an
empty array.

also do not look at field availability when creating a type tree,
as this may depend on where the cursor is pointing.

because record fields are now somewhat dynamic again (availability
depending on cursor position), we return to using the old Record
class. we can have another look at optimization later.

stcorp/coda,stcorp/coda,stcorp/coda,stcorp/coda,stcorp/coda,stcorp/coda,stcorp/coda