Split Quorum and Participant into Separate Packages

A whole bunch of clean up and reorganization was done in the process. The result is a much cleaner codebase that should also be more understandable.

I also attacked the test suite, removing tests that I felt were unneeded and adding tests that I felt were necessary. Not everything is 100% done, but this PR handles most of it.

Some documentation changes were also made.