Enforce at the type level read-only etc. properties

Trying to write read-only properties will now fail at compile time,
rather than at runtime. Same thing applies to other combinations, for
example construct-only properties are properly checked at compile time,
so the following still works:

> win <- new Window [windowType := WindowTypeToplevel]

while the following gives an error:

> set win [windowType := WindowTypeToplevel]