Enhanced settings functionality

Might be nice to provide a method for overriding config in tests. One pattern I quite like is to maintain a stack of configs to prioritise lookup and allow for popping off overrides.