<!--- This environment context section helps us quickly review your PR. 
      Please take a minute to fill-out this information. -->

## Environment
**Liquibase Version**: 3.10

**Database Vendor & Version**: any

**Operating System Type & Version**: any

## Description
Create a custom change with a params list where there is no "name", it will trigger a NullPointerException instead of a nicer validation error explaining the problem.

## Steps To Reproduce
A changelog file with the following customChange:

```
     - customChange:
         class: com.company.customchanges.AddAttribute
         param:
           fieldType: '12'
           mandatory: '1'
           labelKey: userAttribute.firstName
           maxLength: '50'
           index: '2'
           newline: '1'
           readOnly: '1'
           visible: '1'
```

which **was generated by the Liquibase YamlChangelogSerializer!!** (which is a separate issue)
trriggered a NullPointerException.

## Actual Behavior
A NullPointerException without a message.

## Expected/Desired Behavior
A clearer validation error should be thrown indicating the cause of the problem.


if (!configured) {
            try {
                configureCustomChange();
            } catch (CustomChangeException e) {
                throw new UnexpectedLiquibaseException(e);
            }
        }
        try {
            return customChange.validate(database);
        } catch (Exception e) {
            return new ValidationErrors().addError("Exception thrown calling "+getClassName()+".validate():"+ e.getMessage());
        }
    }
    /**
     * Required for the Change interface, but not supported by CustomChanges. Returns an empty Warnings object.
     */
    @Override
    public Warnings warn(Database database) {
        
        return new Warnings();
    }
    /**
     * Finishes configuring the CustomChange based on the values passed to {@link #setParam(String, String)} then calls {@link CustomSqlChange#generateStatements(liquibase.database.Database)}
     * or {@link CustomTaskChange#execute(liquibase.database.Database)} depending on the CustomChange implementation.
     * <p></p>
     * If the CustomChange returns a null SqlStatement array, this method returns an empty array. If a CustomTaskChange is being used, this method will return an empty array.
     */
    @Override
    public SqlStatement[] generateStatements(Database database) {
        SqlStatement[] statements = null;