Implement Commit in the Sync C++ fake server

In addition to adding commit functionality, some of the existing
FakeServer code has been restructured. Most notably, FakeServerEntity
has been introduced to ease the pain of serializing/deserializing
SyncEntity protos. Also, SyncEntity IDs now include the entity's
ModelType so that tombstones sent from the client will have their
type known on the server. Another important change is correctly sending
tombstones back in GetUpdatesResponse.

This CL also starts to use FakeServer in SingleClientBookmarksSyncTest
(all test cases are still run against the Python server). Since the C++
server is now being used a real test, PrototypeFakeServerTest has been
deleted.

BUG=323265

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

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