Fix ticket 241 by guarding against a missing script source.

Sometimes, the script source may not be present because the addon that
provided it is removed.  Protect against this by checking for nil tables
appropriately.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@917 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Add support for Jin'rokh Fluidity buff.  From @aggixx.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@918 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Implement ItemInfo() script declaration.

ItemInfo(itemId buff=buffId proc=procName) declares that the item
specified by "itemId" procs the buff named by "buffId" of type "procName".
The buffIds from all ItemInfo lines are collected into spell lists named
"item_proc_<procName>".

This is intended to mirror the SimulationCraft expression
"trinket.proc.<buff>.<expr>".

For example, the following declarations describe the various editions of
the caster DPS trinket "Wushoolay's Final Choice" which procs an intellect
buff called "Wushoolay's Lightning":

  Define(wushoolays_lightning 138786)
    SpellInfo(wushoolays_lightning duration=20)
  ItemList(wushoolays_final_choice 94531 95669 96041 96413 96785)
    ItemInfo(94531 buff=wushoolays_final_choice proc=intellect)
    ItemInfo(95669 buff=wushoolays_final_choice proc=intellect)
    ItemInfo(96041 buff=wushoolays_final_choice proc=intellect)
    ItemInfo(96413 buff=wushoolays_final_choice proc=intellect)
    ItemInfo(96785 buff=wushoolays_final_choice proc=intellect)

And similarly for "Breath of the Hydra":

  Define(breath_of_many_minds 138898)
    SpellInfo(breath_of_many_minds duration=20)
  ItemList(breath_of_the_hydra 94521 95711 96083 96455 96827)
    ItemInfo(94521 buff=breath_of_many_minds proc=intellect)
    ItemInfo(95711 buff=breath_of_many_minds proc=intellect)
    ItemInfo(96083 buff=breath_of_many_minds proc=intellect)
    ItemInfo(96455 buff=breath_of_many_minds proc=intellect)
    ItemInfo(96827 buff=breath_of_many_minds proc=intellect)

It is then possible to use "item_proc_intellect" as a buff name to
represent the intellect proc from either trinket, e.g.,

  # metamorphosis,if=trinket.proc.intellect.react
  if BuffPresent(item_proc_intellect) Spell(metamorphosis)

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@919 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Keep a current estimate of the current latency in OvaleFuture.latency.

The latency is estimated by tracking the difference between the times of
the most recent UNIT_SPELLCAST_SENT and UNIT_SPELLCAST_SUCCEEDED event
pair.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@920 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Add deque (double-ended queue) implementation in OvaleDeque.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@921 d5049fe3-3747-40f7-a4b5-f36d6801af5f
New module OvaleDamageTaken that keeps track of damage recently taken.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@922 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Rename OvaleDeque to OvaleQueue and implement LIFO and FIFO structures.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@923 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Add new script conditions: DamageTaken(interval) and Latency().

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@924 d5049fe3-3747-40f7-a4b5-f36d6801af5f
MoP 5.3 changes Savage Roar's bonus damage to 40%, up from 30%.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@925 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Update existing MoP 5.2 default scripts for spell changes in MoP 5.3.

This is a stopgap fix until new scripts are eventually imported using the
SimC import tool for 5.3 SimC profiles.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@926 d5049fe3-3747-40f7-a4b5-f36d6801af5f