## Environment
**Liquibase Version**: 3.10.3 / 4.3.4

**Liquibase Integration & Version**: gradle - 5.6

**Liquibase Extension(s) & Version**:  - 

**Database Vendor & Version**: FireBird - 3.0.7

**Operating System Type & Version**: Windows 10, 64bit, version - 1909

## Description
Liquibase fails to apply change set with following error:
nested exception is liquibase.exception.LockException: liquibase.exception.DatabaseException: conversion error from string "0" [SQLState:22018, ISC error code:335544334] [Failed SQL: (335544334) INSERT INTO DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, 0)]

## Steps To Reproduce
Install FireBird 3.0.7. Create user and grand permission to this user to create database. Create a database and table. Try to apply any change set.

## Actual Behavior
Change set is not getting applied. It fails to create DATABASECHANGELOGLOCK record. 

## Reason
Firebird 3 supports true Boolean (value - true/false) whereas Firebird 2 supports Numeric Boolean (value - 0/1). Using Firebird3, When DATABASECHANGELOGLOCK table is created, CreateTableGenerator calls BooleanType::toDatabaseDataType which returns Boolean type for Firebird3Database. So, the LOCKED field in DATABASECHANGELOGLOCK is created as Boolean type.
In summary LOCKED filed is Boolean type.
But, when any record is inserted, InsertGenerator::generateValues calls isNumericBoolean. This method is not checking Firebird3Database (rather checking instanceof FirebirdDatabase) and returns numeric Boolean for all firebird. So, the value in the insert sql contains 0/1 for LOCKED field. This is not matching as the field type is Boolean. So, insert fails with error.

## Expected/Desired Behavior
Change set should be applied.
isNumericBoolean should check Firebird3Database instance type and return Boolean for Firebird 3.


/**
     * The database-specific value to use for "false" "boolean" columns.
     */
    public String getFalseBooleanValue(Database database) {
        if (isNumericBoolean(database)) {
            return "0";
        }
        if (database instanceof InformixDatabase) {
            return "'f'";
        }
        return "FALSE";
    }
    /**
     * The database-specific value to use for "true" "boolean" columns.
     */
    public String getTrueBooleanValue(Database database) {
        if (isNumericBoolean(database)) {
            return "1";
        }
        if (database instanceof InformixDatabase) {
            return "'t'";
        }
        return "TRUE";
    }
    @Override
    public LoadDataChange.LOAD_DATA_TYPE getLoadTypeName() {
        return LoadDataChange.LOAD_DATA_TYPE.BOOLEAN;
    }
}