Added Cooldown Timer in the cannonModel class
-weaponCooldownSeconds:int determines the cooldown duration of the weapon
-each weapon is on its own seperate cooldown timer

Added a function requirement for IObjectMethods
-getHitArea() is now a requirement for all gameObjects
-override used on everything nested under gameObject

Fixed an inefficency with fireWeapon
-IWeapon now requires a buildModel function that takes a playerObject
-Cleaned up fireWeapon() function in IWeapon to only require the weapon number

Signed-off-by: sjdodge123 <sjdodge123@github.com>