Detect noop updates when using doc in update API

This allows you to request that Elasticsearch figure out if an update using a document is a noop and then skip it.  This is useful for clients where it is difficult to figure out if the request is really a noop.

Also adds two tolerance measures that can be used to deem a request a noop even if it isn't quite.  The idea being that it isn't _that_ important to know that a page has 100 vs 101 links - so you may as well wait until the field is out of date by more then, say, 10%.

Close #6822
I thought passing in the flag would be better because it allows us to avoid the equality check if we don't need it.  I imagine it'd really only matter for long strings but I also imagine this method receives long strings.