QuestVar: make scope a member; add int and assignment operators; rename unset to clear; make subscribe and unsubscribe static.
Objective: convert all aspects of the objective from get/set methods to field proxies; correct handling of difficulty ranges and T1 special loot; add explicit copy ctor and assignment operator.
Numbered, QuestField, ...: new proxies and auxiliary classes to support fields in Objective.

ObjectiveMessage: new fake message wrapping "QuestChange" messages about objective-related quest vars.
Script: dispatch fake "ObjectiveChange" messages from appropriate "QuestChange" messages.

MessageWrapError: switch wrap_type from type_info to string for clearer exception text.
Message: add wrap_type argument to wrapping ctor; check for nulls more thoroughly.

AIAttackMessage, FrobMessage: make parse methods private class members.