Fix the way variables are handled using GetState/SetState in scripts.

Internally, SetState() is a special type of action that is "cast"
depending on whether the time span for the action includes "now" or if
it's in the future.

Define a new method "GetAction" for OvaleBestAction that takes a master
node and emits a <timespan, priority, element> triplet for the computed
best action.  GetAction() automatically deals with SetState() actions
during the computation.

This fixes the fire mage script getting stuck when using GetState() and
SetState().
TimeOfLastCast() is a state method, not an OvaleFuture method.
Simpilify processing of changes to the addon options.

Use inherited getter/setter functions instead of using the same template
across all options.

Trigger an event when the options are changed so that the icon and menu
options frames are re-drawn.  This de-couples the toggling of options from
forcing a frame refresh in the same execution thread as the option being
toggled.
Remove unneeded "order" properties.

Simply use the order implied by the options as they are defined.
Use "self" instead of the module name where appropriate.
Treat "aura lag" and its description as localized strings.
Separate event handler from the method to compile the script.

This is solely for code clarity.
Only update the icon frame if needed from within the OnUpdate handler.
Workaround for GetItemInfo() possibly returning nil.

The proper fix is to wait for GET_ITEM_INFO_RECEIVED and correctly fixing
all strings in the AST afterwards.  This is a workaround to fix just the
checkbox items that use ItemName() on player login.
Remove reference to global variable that is never created nor used.

Ovale uses AceDB-3.0 to manage profiles, so it only ever needs to use
SavedVariables to note the name of the AceDB-managed database.
Add Drums of Rage as a burst haste raid buff.
Death Knight: Suggest AMS after other short CD spells.

AMS is more situational than the other short CD DPS spells despite it
being a source of runic power.
Rogue: Always pool energy for Envenom as Assassination.

It is always a DPS boost to pool energy for Envenom.  The SimulationCraft
action list has simply not been optimized properly for assassination
rogues.
Rogue: Only Rupture if at least half the ticks will hit for assassination.
Warlock: Shadowburn can only be used when the target is below 20% health.

This fixes ticket 411.
Warlock: Properly allow AoE icon to be toggled for Destruction warlocks.
Mage: Skip translating the SimC action "ice_floes".

Ice Floes is very situational -- you want to use it before you move, but
there's no way for Ovale to know when that is.  Don't suggest Ice Floes,
and instead rely on the player to recognize when to use it on her own.
Mage: Fix obvious documentation bugs.
Druid: Fix Guardian shortcd icon when AoE option is toggled on.
Shaman: Show the correct Enhancement icons when the AoE option is toggled.