Update all exports to use ES2015 classes
As the script shifts to more modern applications and potential future use cases, some of our current practices can be updated to be more secure and modern. Any place we export nested functions should instead be updated to be stateful class instances. This allows more easy reuse of functionality, better testing potential, and the possibility of private fields. While private fields are still technically experimental, they have been implemented within Node.js and can be used in the current version.