This mitigates most issues with properties having self-loops,
particularly in cases like Strength where the value `strength` is used
in the description of Strength
Because children of actions are always inactive in the new engine, buffs
that are children of actions are inactive while buffs elsewhere on the
character sheet are active, making it redundant to keep the extra field
Parsing is one of the more expensive computations done to characters, so
the parser results are now stored on the DB and only updated if they are
dirty. A hash is used to determine if the calculation has changed since
the last computation