Rename List->BuiltinList in gracelib

Moving List out of the way allows defining a separate List type later,
which would otherwise have a conflicting name.
Add globally-available List type
Adding class return type to AST
Fix JS asNumber method
Add doc/hacking guidelines