Refactor Tab Groups part 1

Pulled out TabGroupModel and TabGroup from TabStripModel. See the comments in each class for how they're used. See also the TODOs in the comments for how this can be further improved in future CLs (working on this next).

The API in TabStripController still remains despite my best efforts to get rid of it. For now that seems better because I have to touch fewer things while refactoring. Eventually I'm interested in seeing how we can avoid duplicating APIs across models and controllers, which is a bigger philosophical question.

Change-Id: I96130622ab939de7d986c7e3dd1b19b476658f02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1915194
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Taylor Bergquist <[email protected]>
Commit-Queue: Connie Wan <[email protected]>
Cr-Commit-Position: refs/heads/master@{#717648}
18 files changed