ENG-6942: Remove separate counter from the bulk loader class PerPartitionTable.
ENG-6942: Remove unnecessary queue offers from PerPartitionTable.
ENG-6942: Remove PartitionProcessor from the bulk loader.

Changing the model from allowing multiple tables to share the same partition
processor to one processor per table per partition, which is the model all of
the bulk loaders use (CSV, Kafka, JDBC).

- For each PerPartitionTable, row insertion is just submitting a task
  to the fixed size queue. Once the bucket is full, a dedicated thread
  will pull all tuples off of the queue into a batch. It calls the
  procedure to insert the batch on the same thread. So there is a
  single thread doing all the interesting stuff in PerPartitionTable,
  the only synchronization needed is for triggering the batching.

- If a batch fails to be inserted, it will queue itself up onto the
  same thread and insert row by row when the task is executed.

- Drain() is removed, it's essentially flush followed by draining the
  client. Flush makes sure that all tasks queued up previously are executed
  before it returns.

- Added a shutdown method to terminate the processing thread after flushing the
  task queue.

As a result of this, a lot of things are removed from
PerPartitionTable and BulkLoaderState. There are some synchronization
in VoltBulkLoader which may be able to go away, but I haven't touched
yet.
ENG-6942: Addressing Anish's comments.

- Reorganized imports in the bulk loader.

- Added the new LOADER logger to the log4j.xml.
ENG-6942: Fix drainage problem in the bulk loader.
ENG-6942: Remove unused stats tracking in the bulk loader.
Merge pull request #1717 from VoltDB/ENG-6942

ENG-6942: Refactor bulk loader to fix deadlock.

r=akhanzode