Merging develop into master

The 'develop' branch is in a complete and working state. We have implemented the features we committed to in the beginning of this project. There is still more work to be done on the stretch goals; a good amount of future work.