Use the default provided value if it has the correct type

When an appsetting is requested on a possibly missing key, the
default value can now be provided using the target type immediately
Add tests to cater default argument change