Added HeroData for Hammerstorm. Updated HeroData template to include some targeting scheme bools.
Added HeroData for Magmus.
Added HeroData for Predator.
Added HeroData for Demented Shaman.
For a full changelog see https://github.com/Zerotorescue/HoN-Bots. Below are the changes copy-pasted in a random order.

Fixed error with loading HeroData files.
Added CanDispositionSelf, CanDispositionFriendlies and CanDispositionHostiles to AbilityInfo.
Updated HeroData Template to include the new Disposition properties.
Added ShouldAvoidDamage to AbilityInfo.class for abilities like Voodoo Jester's Cursed Ground.
Added HeroData for Voodoo Jester.
Updated HeroData template to make copy-pasting lines easier.
Added SetHeroInfo and GetHeroInfo to AbilityInfo.class so we can get the related HeroInfo when we only know the AbilityInfo. SetHeroInfo is automatically called in HeroInfo:AddAbility(abil).
Added ChannelingState to AbilityInfo. This property is used to specify the state being placed on the hero casting the ability so we can find out what ability is being channeled. This fixes an issue where Magmus' Eruption (R) and Steambath (W) could not be differentiated.
Added GetAllAbilities function to HeroData for retrieving all abilities with the provided filters.
Added IsFrom function to AbilityInfo which can be used to determine if the ability is from the provided unit.
HeroData:GetAllAbilities can now be provided with either a table (for multiple filters), string (for a single filter) or empty (for no filter) filter parameters.
Changed the distance threat formula so the multiplier is 1-2 when the hero is within the danger radius and 0.5-1 when he is outside.
Added UnitUtils.GetEnemyTeam(unit) for getting the enemy team of a hero.
Added UnitUtils.ShouldSpread(unit) for checking if the enemy team has an ability for which we should spread.
Added UnitUtils.MayHaveToInterrupt(unit) for checking if the enemy team has an ability that may have to be interrupted in the future. Useful for deciding if we want to save an interrupt or get an item that can interrupt.
Added UnitUtils.ShouldInterrupt(unit) for checking if an enemy and which enemy has to be interrupted right now.
Added UnitUtils.IsPorting(unit) for checking if an enemy is currently porting.
Added UnitUtils.MayHaveToBreakFree(unit) for checking if we may have to break free of an ability in the future. Useful for deciding what items we should get.
Added UnitUtils.ShouldBreakFree(unit) for checking if we should break free from a debuff such as Keeper's Root.
Added UnitUtils.MayHaveToPort(unit) for checking if we may have to port out in the future if we are affected with a hostile debuff. Useful for deciding if we want to keep a Homecoming Stone or it's cooldown available.
Added UnitUtils.ShouldPort(unit) for checking if we should port out right now due to being affected by a dangerous ability.
Added UnitUtils.MayHaveToAvoidDamage(unit) for checking if we may have to avoid damage in the future. Useful for deciding if we want defensive items such as a Void Talisman, Astrolabe, Barrier Idol, etc..
Added UnitUtils.ShouldAvoidDamage(unit) for checking if we should avoid damage right now.