**Description**

The operator is arguably unnecessarily limited to AI Platform’s standard images. The only change that is required to lift this constraint is making `package_uris` and `training_python_module` optional with default values `[]` and `None`, respectively. Then, using `master_config`, one can supply `imageUri` and run any image of choice.

**Use case / motivation**

This will open up for running arbitrary images on AI Platform.

**Are you willing to submit a PR?**

If the above sounds reasonable, I can open pull requests.
tests/providers/google/cloud/operators/test_mlengine.py
self.dag = DAG(TEST_DAG_ID, default_args=self.TRAINING_DEFAULT_ARGS)
    @patch('airflow.providers.google.cloud.operators.mlengine.MLEngineHook')
    def test_success_create_training_job(self, mock_hook):
        success_response = self.TRAINING_INPUT.copy()
        success_response['state'] = 'SUCCEEDED'
        hook_instance = mock_hook.return_value
        hook_instance.create_job.return_value = success_response
        training_op = MLEngineStartTrainingJobOperator(**self.TRAINING_DEFAULT_ARGS)
        training_op.execute(MagicMock())
        mock_hook.assert_called_once_with(
            gcp_conn_id='google_cloud_default',
            delegate_to=None,
            impersonation_chain=None,
        )
        
        self.assertEqual(len(hook_instance.mock_calls), 1)
        hook_instance.create_job.assert_called_once_with(
            project_id='test-project', job=self.TRAINING_INPUT, use_existing_job_fn=ANY
        )
    @patch('airflow.providers.google.cloud.operators.mlengine.MLEngineHook')
    def test_success_create_training_job_with_master_config(self, mock_hook):
        custom_training_default_args: dict = copy.deepcopy(self.TRAINING_DEFAULT_ARGS)
        custom_training_default_args['scale_tier'] = 'CUSTOM'
        training_input = copy.deepcopy(self.TRAINING_INPUT)
        training_input['trainingInput']['runtimeVersion'] = '1.6'
        training_input['trainingInput']['pythonVersion'] = '3.5'
        training_input['trainingInput']['jobDir'] = 'gs://some-bucket/jobs/test_training'
        training_input['trainingInput']['scaleTier'] = 'CUSTOM'
        training_input['trainingInput']['masterType'] = 'n1-standard-4'