Make validation indirect by introducing ValidateCore
Fix ThrotteledCount by manipulating statistics in bas class
Add new common generation base type IGenItem
Remove some duplicate ThrottleCount uses