Engine: managed user script object support
Script: Compiler support for managed user objects

Allows the 'new' operator to be used with managed structs to create new
user objects at runtime.
Script: Built-in keyword and lockdown of extending structs

This introduces the "builtin" keyword, which modifies the behaviour of a
struct. Built-in structs cannot be instantiated directly and they cannot
be extended by non-built-in (i.e. user) structs. Also locks down
extending structs so that a managed struct cannot extend an unmanaged
one and vice versa.
Script: Disallow pointer members in managed structs

Until we have a way of managing their reference counts, pointers inside
managed structs need to be disabled. This can be introduced at a later
date without affecting syntax (we just remove the restriction added in
this commit).
Merge pull request #171 from gurok/331_new_user_struct

Script: Limited Managed User Struct Support