Introduce AppListSyncableService, owns AppListModel and builder

This introduces AppListSyncableService, but does not implement any
syncing yet. The purpose is to move ownership of AppListModel so that
we can maintain and sync the model state independent of the view. It also
made sense to move ExtensionAppModelBuilder ownership to
AppListSyncableService.

This required a fair bit of (smallish) re-factoring. Here is a simplified
diagram that may help:
https://docs.google.com/a/google.com/drawings/d/1NgaQzdqddTh1W7altZ6P6t4dNxZDRO0e_HgJqa8V36A/edit

BUG=315887
For minor ash/shell/ changes:

R=jennyz@chromium.org, tapted@chromium.org, xiyuan@chromium.org
TBR=jamescook@chromium.org

Review URL: https://codereview.chromium.org/66023003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236020 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 236020