Move further away from the ghost singleton object

This helps issue #1575.

I've broken the PR up into highly specific commits for easier review, with each commit message accurately describes what was accomplished in that commit.

Please read the commit messages for further details as I put most of the explanations there.

I tried to avoid doing any overlapping work that @sebgie is doing in #755, hopefully I succeeded in that endeavor :).