Add |position| to AppListItemModel and add AppListItemList (Take 2)

This adds a |position_| member to AppListItemModel in preparation for
syncing the app list independent of extensions.

It also moves some common code in AppListModel and AppListFolderItem
into AppListItemList, which ensures that |position_| is keept up to date.

This implementation keeps all position maintenance in AppListItemList
and uses AppListItemListObserver to allow ExtensonAppItem to
(temporarily) override the positioning logic.

BUG=305024
For as/shell OWNER:

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

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231923 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 231923
Reenables WindowOpenPanelTest.WindowOpenFocus on windows

Stack trace in bug has been fixed by revision 227740.

BUG=162912
TEST=test only change
TBR=dimich@chromium.org

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

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