Implement settings manager that's capable of doing keychain settings, by
returning a promise in cases where a deferred result is the only
option (as is the case with the keychain).