Android: Tab interface

This CL defines Tab as an interface, and provides a concrete
implementation of it (TabImpl). Initially the codebase switches to
TabImpl for accessing non-public interface methods. The interface
starts with a subset of methods and gradually includes more,
and eventually replace all the references of TabImpl with Tab.

See https://bit.ly/2WibHVy for the design proposal.

Bug: 995903
Change-Id: Iab5b9f703732f2c6b33b1fce8836de37acf21a7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1883270
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Reviewed-by: Wei-Yin Chen (陳威尹) <wychen@chromium.org>
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Reviewed-by: Theresa  <twellington@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#718463}
181 files changed