Setup refactor

This pull request implements most of issue #21. I'll leave further discussion there about the changes and what remains.

One important note is that this merge will require re-generating configuration files. There's a check in place which will notify you if conf re-generation is needed (it's checked when setup.sh is run).