Switch to using settings object

@jnjosh @macdrevx This is primarily as a way to show that we can use settings objects to accomplish things that would otherwise require associated objects. Code complexity is roughly the same, though by ridding ourselves of the Objective-C runtime functions, the barrier to entry is lower.