drive: More reliable MD5 management of FileCacheEntry

Add FileCache::UpdateMd5().
Stop setting MD5 with FileCache::ClearDirty().
Remove UpdateOperation::ContentCheckMode. (Instead, use FileCacheEntry::md5 to determine whether content check is needed or not.)

MD5 of a FileCacheEntry changes as follows:
(md5.empty()==true means MD5 is unknown)
1. FileCache::Initialize clears MD5 of all dirty entries for backward compatibility.
2. FileCache::OpenForWrite clears MD5.
3. FileCache::UpdateMd5 calculates MD5.
4. FileCache::ClearDirty does nothing for MD5.

UpdateOperation behaves in the following way:
- Before upload, UpdateMD5() is called if FIleCacheEntry::MD5 is empty. IsOpenedForWrite() is used to prevent unneeded upload from starting.
- After upload, ResourceEntry's MD5 is checked against FileCacheEntry::MD5. If it doesn't match, it means someone has opened the file (i.e. clearing MD5) so shouldn't clear the dirty bit.

BUG=326054
TEST=unit_tests
R=kinaba@chromium.org

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

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