Refactor specyfing settings in Repository::Settings

This is another step in refactoring Repository::Settings. We're going
away from managing nested hashes, so it's sufficient to use simple API
like "add_setting :foo, :boolean, default: false" and now allow to merge
nested hashes. All of the settings added with add_setting will be
available when serializing settings to hash and they will be allowed to
be set through merge.