## Environment
**Liquibase Version**: 4.0.0

**Database Vendor & Version**: DB2 for i (AS400 iSeries)

## Description
When dropping all tables, Liquibase tries to lookup foreign key constraints. It executes a database specific query to do this.
It has a specific query for DB2, but this only works for DB2 UDB, and not for DB2 for i.

## Steps To Reproduce
List the steps to reproduce the behavior.
Execute a dropAll against a DB2 for i database. 

## Actual Behavior
An exception occurs:
`Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in com.essers.legplanning.domain.support.internal.DomainSupportConfiguration: Invocation of init method failed; nested exception is liquibase.excep
tion.DatabaseException: liquibase.command.CommandExecutionException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: com.ibm.as400.access.AS400JDBCSQLSyntaxErrorException: [SQL0204] REFERENCES in SYSCAT type *FILE not found.
`

## Expected/Desired Behavior
No exception occurs and tables are dropped.

## Additional Context
This worked on 3.6.3, but not anymore on 4.0.0. The reason for this is some internal Liquibase refactoring, where dropping the tables is now done differently. See StandardLockService.destroy [https://github.com/liquibase/liquibase/commit/7fa3d5305ef3a9b2cd7d7e79bde48a8cae82755c](https://github.com/liquibase/liquibase/commit/7fa3d5305ef3a9b2cd7d7e79bde48a8cae82755c)

A similar check has already built in to retrieve unique constraints. See [https://liquibase.jira.com/browse/CORE-1915](https://liquibase.jira.com/browse/CORE-1915)
An extra db2 check was built in (see [https://github.com/liquibase/liquibase/commit/b54ee3faee00c7d9a99036dc711094556b50298e)](https://github.com/liquibase/liquibase/commit/b54ee3faee00c7d9a99036dc711094556b50298e))
{{ if (database.getDatabaseProductName().startsWith("DB2 UDB for AS/400"))}}

## Test Requirements (Internal Liquibase QA)
This issue is a special case where we do not have access to the database platform in order to perform testing. Our validations will be to ensure the changes have not impacted other platforms.

#### Manual Test Requirements
Setup: Populate the database with tables with a foreign key. 

_Verify successful drop-all of tables associated by a foreign key._

* Oracle
* MSSQL
* MySQL
* Postgres
* Maria DB

#### Automated Test Requirements
* Verify all existing functional tests pass on the build server.
* Implement hasForeignKey and doesNothaveForeignKey methods for the DataBaseInstance class.
  * MySQLInstance.java
  * MariaDbInstance.java
  * MsSqlInstance.java
  * OracleInstance.java
  * NOTE: PostgresInstance.java is already implemented.
* Add a new test to DropAllTests.java that validates drop-all when a foreign key exists.
  * Test without a Pro license
  * Test CLI only (no Maven)
  * Test all supported platforms (multidb test)
  * Use the new format of CLI commands (LiquibaseNewCli) to construct Liquibase command line.
  * Make sure to add labels to new foreign key changesets added to the update changelog.
    * labels=”lb-683, community, addFk”



┆Issue is synchronized with this [Jira Bug](https://datical.atlassian.net/browse/LB-683) by [Unito](https://www.unito.io)
┆Fix Versions: Community 4.x

"join syscat.keycoluse fk_col on ref.constname=fk_col.constname and ref.tabschema=fk_col.tabschema and ref.tabname=fk_col.tabname " +
                        "join syscat.keycoluse pk_col on ref.refkeyname=pk_col.constname and ref.reftabschema=pk_col.tabschema and ref.reftabname=pk_col.tabname " +
                        "WHERE ref.tabschema = '" + jdbcSchemaName + "' " +
                        "and pk_col.colseq=fk_col.colseq " +
                        (tableName != null ? " AND fk_col.tabname='" + tableName + "' " : "") +
                        "ORDER BY fk_col.colseq";
            }
            protected String getDB2ZOSSql(String jdbcSchemaName, String tableName) {
                return "SELECT  " +
                        "  ref.REFTBCREATOR AS pktable_cat,  " +
                        "  ref.REFTBNAME as pktable_name,  " +
                        "  pk_col.colname as pkcolumn_name, " +
                        "  ref.CREATOR as fktable_cat,  " +
                        "  ref.TBNAME as fktable_name,  " +
                        "  fk_col.colname as fkcolumn_name, " +
                        "  fk_col.colseq as key_seq,  " +
                        "  decode (ref.deleterule, 'A', 3, 'C', 0, 'N', 2, 'R', 1, 1) as delete_rule,  " +
                        "  ref.relname as fk_name,  " +
                        "  pk_col.colname as pk_name,  " +
                        "  7 as deferrability  " +
                        "FROM " +
                        "SYSIBM.SYSRELS ref " +
                        "join SYSIBM.SYSFOREIGNKEYS fk_col on ref.relname = fk_col.RELNAME and ref.CREATOR = fk_col.CREATOR and ref.TBNAME = fk_col.TBNAME " +
                        "join SYSIBM.SYSKEYCOLUSE pk_col on ref.REFTBCREATOR = pk_col.TBCREATOR and ref.REFTBNAME = pk_col.TBNAME " +
                        "WHERE ref.CREATOR = '" + jdbcSchemaName + "' " +
                        "and pk_col.colseq=fk_col.colseq " +
                        (tableName != null ? " AND ref.TBNAME='" + tableName + "' " : "") +
                        "ORDER BY fk_col.colseq";
            }
            @Override