Ovale Spell Priority 6.0.44

Changes from version 6.0.43:

- Raise the threshold to display a new action.

Ovale compares the start times of actions and selects the earliest one to
display.  If the new action is the same as the currently displayed action
and the start time is within COOLDOWN_THRESHOLD seconds, then Ovale
doesn't reset the cooldown sweep animation on the icon.

Raise COOLDOWN_THRESHOLD from 0.01 to 0.1, which should smooth out the
jitter/flicker in the display due to resource regeneration.

This addresses ticket 174 by @TuhMuffinMan.

- BuffRemains() was renamed to BuffRemaining().

- SpellList() and ItemList() use positional parameters, not named ones.

This makes both SpellList() and ItemList() work again after the the commit
to split parameters into positional and named parameters.

- Regenerate scripts from SimulationCraft profiles.

- Merge branch 'simulationcraft' into master.

Pull in changes from SimulationCraft release-603-24.

- Import Tier17M profiles from SimulationCraft tag "release-603-24".

- Import Tier17M profiles from SimulationCraft tag "release-603-23".

- Import Tier17M profiles from MMO-Champion rogue forum, updated 2015-01-13.

- Import Tier17M profiles from MMO-Champion rogue forum, updated 2015-01-09.

These profiles are slightly different from the default ones distributed
with SimulationCraft and are a testbed for changes to increase DPS in the
simulations.

- Paladin: EF, WoG and SotR are all off-GCD spells.

- Translate "dot.sacred_shield.remains" as BuffRemains(), not BuffPresent().

- Priest: Mindbender replaces Shadowfiend if it is talented.

- Avoid creating iterators at run-time using string.gmatch().

string.gmatch() returns a stateful iterator that consumes a small amount
of memory that must be garbage-collected after the iterator is discarded.
Ovale was calling string.gmatch() in its evaluation loop, which was
causing large amounts of memory to be consumed and discarded, which
triggered garbage-collection at a higher-than-normal rate.

Re-write the code paths so that there is no longer a need to parse a
string at run-time.  Comma-separated values are now parsed and split into
a table when the script is parsed in OvaleAST, and instead of using a
iterator over the CSV, a index into the CSV table is now used.

- Differentiate between positional and named parameters.

The Ovale grammar allows for key=value parameters and if the key is a
small number, e.g., 1=value, then the node's parameter table could have an
overwritten positional parameter.

Split the positional and named parameters into separate tables so that
this is avoided.  Teach all parts of the code that references
"node.params" to use the correct table, either "node.positionalParams" or
"node.namedParams".

This changes the signatures for many functions due to having to pass both
parameter tables in place of just a single parameter table.

- Add mend_pet to the Hunter spell database from @Sibli in ticket 541.

- Add support for SpellAddPetBuff() and SpellAddPetDebuff() aura lists.

- Add a Common Sub-Expression Elimination optimization for the AST.

This optimization pass walks through the node list and finds references to
nodes for which there are string representations and replaces them with
the first node found that has the same string representation.

- Merge LeftRotateTrees() into ParseExpression() as it's the only caller.

- Unambiguously place release.sh in the public domain.

- Paladin: Add more spells to the database; from @Silbi in ticket 539.

- Paladin: 4pT16 bonus is now the leveling perk Empowered Divine Storm.

Divine Crusader has been re-used directly as the leveling perk Empowered
Divine Storm.  Remove some guards that only processed lines including
"divine_crusader_buff" if the 4pT16 bonus was active.

Fixes ticket 540 by @Silbi.

- Clarify a log entry for when an action is delayed.
