Added Options and Stuff libraries
Added Options and Stuff libraries
Merge branch 'core/use-options' of github.com:Varriount/Colliberation into core/use-options
Replace messy usage of class and instance attributes for configuration values with the Options container.

Refactor bits of documentation and code.
Fixed getting shadow_docs from protocol kwargs

Cleaned up utils.py a bit.
Moved the custom patch apply function to the utils module.
Refactored document and protocol classes to make text changes less complicated.