Refactor the bulk API

* Add different bulk requests (`BulkIndexRequest`, `BulkUpdateRequest`,
  `BulkDeleteRequest`).
* Add more options to the various bulk requests.
* **Breaking**: Change the API for adding bulk requests. Users must
  change their API from req := &elastic.BulkIndexRequest{...} to
  req := elastic.NewBulkIndexRequest().Type(...).Id(...) etc.
  This change aligns the bulk API with the rest of elastic.
* Add `BulkResponse` to contain the `Items` field. Allow users to query
  the result items. See bulk_test.go for details.
* More tests for the bulk API.
go fmt
go vet
Merge remote-tracking branch 'upstream/master'
Merging upstream