Previously (until RBAC was introduced) users were not allowed to connect to ClickHouse if user definition referenced a non-existing profile/quota. `DB::Exception: There is no profile 'does_not_exist' in configuration file..`

After RBAC was introduced this behavior changed and now users can connect and they are assigned default profile. This is unexpected and is easy to make mistakes (eg typos) that would give users more privileges than expected (allow_ddl, readonly).

cc @vitlibar 
else if (config.has(quota_config + ".keyed"))
            quota->key_type = QuotaKeyType::CLIENT_KEY_OR_USER_NAME;
        else
            quota->key_type = QuotaKeyType::USER_NAME;
        Poco::Util::AbstractConfiguration::Keys interval_keys;
        config.keys(quota_config, interval_keys);
        for (const String & interval_key : interval_keys)
        {
            if (!startsWith(interval_key, "interval"))
                continue;
            String interval_config = quota_config + "." + interval_key;
            std::chrono::seconds duration{config.getInt(interval_config + ".duration", 0)};
            if (duration.count() <= 0) 
                continue;
            quota->all_limits.emplace_back();
            auto & limits = quota->all_limits.back();
            limits.duration = duration;
            limits.randomize_interval = config.getBool(interval_config + ".randomize", false);
            for (auto quota_type : collections::range(QuotaType::MAX))
            {
                const auto & type_info = QuotaTypeInfo::get(quota_type);
                auto value = config.getString(interval_config + "." + type_info.name, "0");
                if (value != "0")
                    limits.max[static_cast<size_t>(quota_type)] = type_info.stringToValue(value);
            }
        }
        quota->to_roles.add(user_ids);
        return quota;
    }
    std::vector<AccessEntityPtr> parseQuotas(const Poco::Util::AbstractConfiguration & config)