drive: FileCache::Store marks the entry as dirty if empty MD5 is given

Store() and MarkAsDirty() should be performed together, atomically.
Otherwise, it may cause troubles when something goes wrong. (e.g. sudden shutdown of the device)

Provide a way to perform Store() and MarkAsDirty() at the same time by specially handling empty MD5.

BUG=260539
TEST=unit_tests

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247559 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 247559
Clarify and separate the concept of "Drive path" and "Filesystem relative path".

- RelativeFileSystemPath (also called VirtualPath) is the path appended
in the filesystem URL, after .../external/. So it looks like
"drive-xxx/root/foo/bar" or "Downloads-xxx/foo/bar".
Note that in the Drive case, it begins with the mount point name,
that differs from profile to profile.

- DrivePath is the path in the hierarchy we manage in drive::ResourceMetadata.
It is like "drive/root/foo/bar" and always begins with "drive".

Every path comes from drive::FileSystem is in DrivePath.
Every path that will be the part of FileSystem API must be in RelativeFileSystemPath.
We need proper conversion for the bridging codes.

BUG=337095

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247561 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 247561
Move 'profile' histograms to public list.

BUG=305652,223859

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

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