Split KafkaConnectSource into an abstract and impl (#6911)

### Motivation

We do extra processing steps and send back a different Record type than what is provided by KafkaConnectSource, but still desire to reuse a majority of the code. Having an Abstract implementation allows us to reuse the majority of the code while still being able to customize the Record and processRecord method.

### Modifications

KafkaConnectSource was split into AbstractKafkaConnectSource with KafkaConnectSource extending the abstract. The processRecord method was made public to allow overriding of the method. The inner class KafkaSourceRecord was also split into an abstract implementation to allow different types of Records.

### Verifying this change

This change is already covered by existing tests, such as *(please describe tests)*.

The change should only be a splitting of code with no behavioral changes to the KafkaConnectSource class.
2 files changed
tree: 12782d38d74b35fab913ed9949176d152dd38c54
  1. pulsar-io/