Add a "text=string" parameter to write text to overlay an icon texture.

For example, the following displays an Alter Time icon with the word
"cancel" written at the bottom:

    Texture(alter_time_buff text="cancel")

Fix bug in OvaleAST so that string values or string functions for
parameters are properly parsed.
Improve ability to localize strings used in scripts.

* Auto-lookup localizations for strings when strings are expected.
* Allow for L("string") use in scripts to make localization explicit.

Using L("string") in scripts is recommended as it allows for a utility
to extract strings that require localization.
Make Enemies() return a minimum of 1 to avoid problems with yellow NPCs.
Allow a new icon parameter "enemies=N" to pretend N enemies are present.

Add state to OvaleEnemies that may be manipulated to set the number of
enemies we pretend are present.  The property "enemies" may be changed
after the state machine is initialized.

When processing each icon node of the script, see if "enemies=N" is given
as a parameter and use that value to set the "enemies" property of the
state machine.

Modify the Enemies() script condition to always return the "enemies"
property of the state machine if it is set, or else fall back to the true
values of active or tagged enemies.

This allows for a single script function to be used for both a
single-target rotation icon and an AoE rotation icon via:

    AddIcon enemies=1 { DoRotation() }
    AddIcon enemies=5 { DoRotation() }

where DoRotation() is a function that can conditionally suggest different
actions based on the value of Enemies().
Add TimeSincePreviousSpell(id) script condition.

TimeSincePreviousSpell(id) returns the number of seconds since the
previous cast of the given spell.

Teach OvaleFuture to track the most recent ending cast times of successful
spellcasts, which is needed to implement TimeSincePreviousSpell().
Add SpellCooldownDuration() condition to return cooldown duration.

SpellCooldownDuration(id) will return the duration of the cooldown for the
given spell.
Add BuffDurationIfApplied() script condition.

BuffDurationIfApplied(id) returns the duration of the aura if it is
applied at the current time.
Add Talent(id) script condition to return whether the talent is active.

This is a shorter boolean version of TalentPoints(id) for brevity and
better readability in scripts.
Hunter: Add Trap Launcher spell information.
Complete rewrite of OvaleSimulationCraft module.

Use modern compiler design to create a parser and code generator to
convert SimulationCraft profiles into Ovale scripts.

Generate a "SimulationCraft" AST from the SimC profile and emit an Ovale
script AST, then use OvaleAST to unparse in order to emit an Ovale script.

The use of ASTs allows for a more sophisticated translation of SimC action
lists into Ovale scripts, including proper time-span based translations of
"pool_resource" and "wait" actions.

Rune support is rudimentary, as it only supports rune expressions of the
form <rune><comparator><number>.

Also add a script to test OvaleSimulationCraft functionality.
Quiet compiler warnings for some external library calls.
Modify AST test script to more easily test each class's default script.
Treat Incarnation: King of the Jungle for druids as a stealth buff.

Much like Shadow Dance for rogues, it allows spells that normally require
stealth to be used without being stealthed.
Hunter: Add Glyph of Explosive Trap.
Priest: Add Glyph of Shadow Word: Death spell information.
Warrior: Note that Execute consumes Death Sentence.
Shaman: Add Primal Strike, used as a range check for Magma Totem.
Shaman: Calculate Flame Shock damage for enhancement shamans.
Add Stormlash Totem and Skull Banner as short-term raid buffs.

Stormlash Totem can be dropped by any shaman in the raid, and Skull Banner
can be dropped by any warrior in the raid.  Adding them as short-term raid
buffs in OvaleData will allow OvaleSimulationCraft to correctly emit "any=1"
when checking for the buff in a script condition, e.g.:

    if BuffExpires(skull_banner_buff any=1) Spell(skull_banner)
Warlock: Add "summon" and "grimoire" pet summoning spells.