moves all state to a dedicated class

This commit moves all state that might change between serialization/deserialization
runs into a dedicated class. This class is available to all classes which are
concerned with the serialization and will it make super easy to propagate user
specific settings to these classes.
adds more docs
auto fixes
moved to repository
splits context into two sub-classes for serialzation/deserialization
auto fixes
fixes some typos, adds changelog document
updates docs