Added support for serialization
Added support for serialize()ing and unserialize()ing \Poligen\Language\Document objects.
Parse once, produce many (POPM)
It's not necessary to parse the source grammar every time a production is wanted: once a Polygen document is obtained, it
can be serialize()d to a string and stored as a string constant. This way, the parsing can be done only once at
"compile time", then at runtime, it's sufficient to unserialize() the string back to a Polygen document, and it can be
used as usual to obtain a production.