Refactoring to improve per-task transaction isolation.

This fixes existing bugs that cause duplicates when tasks die or are killed:
- Each executeBatch in a task is currently committed individually
- Currently the connection is implicitly committed during VerticaOutputFormat.close() which occurs during task kill

The fix includes:
- Setting autoCommit to false
- Handling commits and rollback in a new VerticaTaskOutputCommitter
- Adding ability to plug in a custom committer via mapred.vertica.output.committer. We plan to extend VerticaTaskOutputCommitter to implement custom table verification (and potentially manual rollback) in commitJob.