Patch 6.0.2/API changes

Blizzard has also posted an official thread on 6.0 changes.
==New==
*New Widget type: CinematicModel, derivative of PlayerModel
*New XML element type: "keyValue", currently only supported for Frames.
**Functionality appears equivalent to creating a new element in ParentKey's table.
*New "atlas" and "useAtlasSize" properties for textures defined in XML. Equivalent function added for texture widgets called Texture:SetAtlas. For example:
**Before: file="Interface\PetBattles\PetJournal"
**After: atlas="PetJournal-BattleSlot-Locked" useAtlasSize="true"
*C_Timer functions added - timers with callback functionality! See , , and for more details.
**handle = (lengthInSeconds, callback)
**if (handle) then handle:Cancel(); --timer complete code goes here; end
*Garrison stuff - AddOns/Blizzard_GarrisonUI, C_Garrison.*
*Objective Tracker - AddOns/Blizzard_ObjectiveTracker (quest, achievement, auto quest popup, scenario, bonus objective, ...)
*Group finder - FrameXML/LFGList.(lua,xml), C_LFGList.*
*Second Void Storage page
==Changes==
*1/(nil|0) changed to true/false all over the API, notably:
**()
**(): last parameter (textWrap)
**()
**() and friends
**()
**()
*() 2 new returns after bag, tab, voidSlot
*() new return (#8): specMatches
*() now also returns the mapID : mapID1, mapName1, mapID2, mapName2, etc.
*() now also returns the zoneID : zoneID1, zoneName1, zoneID2, zoneName2, etc.
*() has had its arguments and return values changed: 
**args: (index[, isInspect, talentGroup, inspectedUnit, classID]) -> (tier, column, talentGroup[, isInspect, inspectUnit])
**returns: name, iconTexture, tier, column, selected, available -> talentID, name, iconTexture, selected, available
* () is a new function that takes a talentID as its parameter, and returns the same as ().
*() now takes a talentID as its parameter, as returned by ().
* new return (#11): exactMatch
* has greatly changed returns.
**returns: title, level, suggestedGroup, questTag, isHeader, isCollapsed, isComplete, isDaily, frequency, questID, startEvent, displayQuestID, isOnMap, hasLocalPOI, isTask, isStory
* replacement for removed questTag return value from GetQuestLogTitle.
**returns: tagID, tagName
* has changed returns.
**returns: title, level, isTrivial, isDaily, frequency, isRepeatable, isLegendary, ...
* has changed returns.
**returns: isTrivial, isDaily, frequency, isRepeatable, isLegendary
* has removed some returns.
**returns: name, rank, icon, powerCost, isFunnel, powerType, castingTime, minRange, maxRange
* has greatly changed returns.
**returns: hasMainHandEnchant, mainHandExpiration, mainHandCharges, mainHandEnchantID, hasOffHandEnchant, offHandExpiration, offHandCharges, offHandEnchantId, hasThrownEnchant, thrownExpiration, thrownCharges
*A new event, , signals the start of the availability of loot data for various loot-related API functions.
*
**SWING_DAMAGE/SPELL_DAMAGE/SPELL_PERIODIC_DAMAGE gain new parameters after crushing (isOffHand, multistrike)
**SPELL_HEAL/SPELL_PERIODIC_HEAL gains new parameter after critical (multistrike)
**SPELL_MISSED/SPELL_PERIODIC_MISSED/RANGE_MISSED/SWING_MISSED gains new parameter after isOffHand (multistrike)
*New floating combat text type: PERIODIC_HEAL_CRIT
*Instance difficulty
**difficultyID 14 (Normal flex10-30, previously "Flex")
**difficultyID 15 (Heroic flex10-30, new)
**difficultyID 16 (Mythic 20, new)
**difficultyID 17 (Looking For Raid flex10-30, new)
*Many legacy mount-related and pet-related functions were removed and replaced by new functions in C_MountJournal.
** Note: the legacy functions that remain, such as GetCompanionInfo, are almost completely broken as well.
*New Globally Unique Identifier format :
**For players: Player-[server ID]-[player UID] (Example: "Player-976-0002FD64")
**For battle pets: BattlePet-0-[Battle Pet UID] (Example: "BattlePet-0-000000E0156B")
**For creatures, pets, objects, and vehicles: [Unit type]-0-[server ID]-[instance ID]-[zone UID]-[ID]-[Spawn UID] (Example: "Creature-0-976-0-11-31146-000136DF91")
**Unit Type Names: "Creature", "Pet", "GameObject", and "Vehicle"
**For vignettes: Vignette-0-[server ID]-[instance ID]-[zone UID]-0-[spawn UID] (Example: "Vignette-0-970-1116-7-0-0017CAE465" for rare mob Sulfurious)
*Item links data: itemID:enchant:gem1:gem2:gem3:gem4:suffixID:uniqueID:level:reforgeId:upgradeId -> itemID:enchant:gem1:gem2:gem3:gem4:suffixID:uniqueID:level:upgradeId:instanceDifficultyID:numBonusIDs:bonusID1:bonusID2... Example of some bonusIDs:
**448 - Warforged, +6 item level
**449 - Heroic, +13 item level
**450 - Mythic, +26 item level
**451 - Looking For Raid, -12 item level
**15 - Epic, +20 item level
**171 - Rare, +10 item level
* BonusIDs are stored in ItemBonus.db2.
* BonusIDs have a massive number of uses, including but not limited to:
**Random suffixes with varying stat amounts - ex. of the Fireflash: BonusIDs 19-39
**Random bonus tertiary stats - BonusID 40: +Avoidance, BonusID 41: +Leech, etc
**Raid typing - see above
**Dungeon typing - i.e. BonusID 518 with qualifier 17 restricts Bloodmaul Slag Mines Normal mode items to have -10 level
**Random quest upgrades - see above entries for 'Rare' and 'Epic'
**Crafting upgrades - BonusID 525: Basic, BonusID 526: Expert, etc
* BonusIDs can do the following 10 actions: 
**1 - Adjust Itemlevel
**2 - Modify Stats
**3 - Change Item Quality
**4 - Add Item Titles
**5 - Append Words to Item Name
**6 - Add Sockets
**7 - Adjust ItemAppearanceID (which controls ItemDisplayInfoID and FileDataIconID)
**8 - Adjust Equip Level
**9 - Unknown
**10 - Unknown
* You can no longer anchor a frame to another frame that has negative, or zero, width or height. Previously, this was acceptable and could be used for adjusting layouts easily by changing a frame's size when it was hidden.
==Removals==
*AddOns
**Reforging
*FrameXML
**AnimTimerFrame.xml
**FlexRaidFrame.(lua,xml)
==Automated diff==