Merging months of changes into master
The master branch hasn't been used in any official capacity, so we are merging the latest development branch in, since it is the most relevant branch. In particular, some source files have been added in development, which do not even appear in master, making navigation confusing at times -- this will fix that.