Get correct spell ID for spells in the spellbook.

When looping through the spellbook, GetSpellBookItemName() doesn't always
return the name of the spell that's currently showing in the spellbook;
instead it might show the underlying spell that may have been replaced by
a new spell by either talents, glyphs, Symbiosis, etc.

Use GetSpellLink() instead to get the hyperlink of the actual spell that's
showing in the spellbook and parse it to determine the correct spell ID
and spell name.  Associate both the original (replaced) spell ID and the
the true spell ID with the correct spell name as some scripts, e.g.
Leafkiller's feral script, reference the spell using the replaced spell
ID.

Fix by @ShmooDude and closes his tickets 282 and 283.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@1083 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Fix ticket 302 noting inconsistent return value for SpellCooldown().

Modify SpellCooldown to have constant value of 0 if the spell is off of
cooldown.  This matches natural expectations for how to use this script
condition.

Make similar changes to other cooldown conditions.

git-svn-id: svn+ssh://svn.curseforge.net/wow/ovale/mainline/trunk@1084 d5049fe3-3747-40f7-a4b5-f36d6801af5f
Fix infinite loop introduced in r1083 when scanning pet spellbooks.

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