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
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