Bulk API operations refactor

The Bulk API operation classes should not raise their own errors, they should just return replies.

When talking to legacy servers, the bulk api operation classes should handle when to abort sending ops if a reply indicates an error and the execution is ordered.

The BulkWrite class will handle raising errors instead.