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
Parsing is expensive, if the parse tree can be stored on the DB it can
save a lot of compute time, but mongo can't store Classes, so we
re-write without classes