Bulk builder

Unfortunately the way update() and upsert() are implemented they are kind limiting and things such as scripting is not possible to be used as also described [here](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html).

So, update() is now able to send any kind of body and update_doc() can be used for partial document updates with a doc_as_upsert parameter in order to combine partial document upsert as well.

Unfortunately this will mean that the bulk builder will not match the behavior of the library when it comes to updates and upserts although maybe it would be a good idea to change them there as well and allow it to be more flexible.