Code cleanups

the Quests class is too large and has some huge (long) methods. this is work-in-progress to extract those to separate methods and (eventually) split the Quests class into a few smaller classes.

should be zero functional change - just shuffling code around.

all tests pass :)!! (j/k bc there were none to use)

this PR is a lot to take in at once without a good diff tool (github probably won't hack it). might be easier to walk through each commit since they're smaller steps and each should be more obvious when taken individually.