Added reflection based configuration

It'll probably be very expensive in a large application, but it only
happens on startup. The benefit in code simplicity, in addition to
keeping the default values literally right next to the key definition is
a strong incentive.