Make DriveFeedProcessor asynchronous.

DriveResourceMetadata:
* Add RefreshEntryProto, which will eventually replace RefreshFile. It handles update of metadata, change of parents, and both files and directories.
* Introduce AddEntryToParent which adds a DriveEntryProto to the tree. It calls AddEntryToDirectoryInternal which contains common code for AddEntryToParent and AddEntryToDirectory.
* Both AddEntryToParent and RefreshEntryProto use GetParent, a helper to determine the parent. 
* GetChildDirectories recursively gets the list of all children directory paths.
* unit tests for these functions.
* update unit tests to remove dependence on drive_files.h

DriveFeedProcessor:
* ApplyEntryProto calls DriveResourceMetadata::GetEntryInfoByResourceId.
* ContinueApplyEntryProto calls RemoveEntryFromParent for deleted entries, RefreshEntryProto for existing entries, and AddEntryToParent for new entries.
* RefreshEntryProto calls DriveResourceMetadata::RefreshEntryProto.
* NotifyForRefreshEntryProto updates changed_dirs_ with the list of affected directories to be notified.
* AddEntryToParent calls DriveResourceMetadata::AddEntryToParent.
* NotifyForAddEntryToParent updates changed_dirs_ with affected directories to be notified.
* RemoveEntryFromParent first fetches all child directories that need to be notified.
* OnGetChildrenForRemove calls DriveResourceMetadata::RemoveEntryFromParent.
* NotifyForRemoveEntryFromParent updates changed_dirs_ with affected directories to be notified.

A number of functions are now unused. They have been marked with TODOs since this patch is rather large.

BUG=137374
TEST=unit tests.
Review URL: https://codereview.chromium.org/11293247

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168653 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed