Changed the symbol structure slightly to enable examining the details more
easily from within Fexl.

The new structure is:

	[type_form,
		[type_string,0,(struct str *)],
		[type_apply,
			[(type_C|type_F),0,0],  /* flag */
			[type_long,0,(long)line_no]
		]]

The flag represents the "is_name" flag, with type_C (true) if the symbol is a
name, or type_F (false) if the symbol is a literal string.

The old structure was:

	[type_form,
		[(type_name|type_string),0,(struct str *)],
		[type_long,0,(long)line_no]
		]

That required an annoying distinction between type_name and type_string, which
was inconvenient when we just wanted the symbol name as a plain string.  Now we
no longer need type_name at all.

I'm also eliminating the unchecked "as_X" functions in favor of the fully
checked "get_X" functions for typecasting.