Sync dirty objects at the GL layer. The dirty bit system currently puts dirty objects in line with the rest of the dirty state. This means at the Renderer level, the sync manager code would call back to the GL layer to sync the specific objects that are dirty. This is a bit of a layering violation (impl layer mutating top-level objects) and also a bit of repeated boiler- plate code. Fix this by treating dirty objects in a separate dirty bit set, called the dirty objects. This also has the benefit of allowing us to re- implement the dirty object set at a later date, if we want to store them in a list, or other structure. Also don't skip the state sync at the GL level if there are no GL dirty bits. The Impl might have some dirty bits locally, and it's better to call syncState and do the no-op check in the Impl than it is to also sync local state at every sync point (draw call, read, etc) in each Impl. BUG=angleproject:1260 Change-Id: Id5d4beb2a1c4e3ad351edf54e3f32e828d5f5da3 Reviewed-on: https://chromium-review.googlesource.com/318790 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>