InlineEdit: Add container to represent change edit

Change edits are created on top of patch sets and are virtual patch
sets that don't exist in the database. A max of one edit per user per
change is stored on ref:

  refs/users/UU/UUUU/edit-CCCC

for edit by user UUUU on top of patch set P of CCCC, where user account
is sharded in the same way as for refs/changes.  The parent of the edit
is SHA-1 of the patch set P it is based on.

Change-Id: I736f5b954ec539a453cf0500a7bd97547bb494d7
InlineEdit: Add method to read edits

This method is supposed to be used from REST endpoints and from
acceptance tests.

Change-Id: I1114acc280cb5b8235bf941b963e04bbdf5870f9
InlineEdit: Add method to publish edits

Change-Id: I7f73c716d71a0cf335d99d90bf96452ed3798ad6
InlineEdit: Add method to delete edits

Change-Id: I40e303d26f9f173f8832bebee48e9b7f25e26693
Merge topic 'inline-3'

* changes:
  InlineEdit: Add method to delete edits
  InlineEdit: Add method to publish edits
  InlineEdit: Add method to read edits
  InlineEdit: Add container to represent change edit
Revert "Remove gwt.logging.popupHandler"

This reverts commit f15d4aaa6bee4715c3dce221775c039efdd0c28f.
Released GWT still needs this property.
Google will have to filter it out in the build process.

Change-Id: Ie487bd32d741c42bd5f79d2c80ebe8976e667200
Merge "Revert "Remove gwt.logging.popupHandler""
TreeWalk.release() only release reader, so remove it

The code releases TreeWalk. This is not nesessary as the TreeWalk.release()
only releases reader object. This is already done in RevWalk.release()
method.

Change-Id: I934ca374461d242ea999ccff8f46f00d6da7c411
Merge "TreeWalk.release() only release reader, so remove it"
GetCommit: Remove now-unused toPersonIdent method

Missed in I0a7d99e7

Change-Id: I9041652085f09d2449fcf3cb5699f2bcaecd4cfb
Rewrite Change.Id.fromRef()

Move the part of PatchSet.Id.fromRef() that was parsing Change.Ids
into Change.Id. This is slightly awkward because we really want to
return the (start, end) indexes from our helper method, but unless we
allocate a new object we can only return one. So, return start, and
re-iterate the few chars comprising the change number.

Change.Id.fromRef() currently parses the Change.Id, then ensures that
the remainder of the string produces a valid PatchSet.Id. Soon we
will want to expand this definition to allow other kinds of
change-specific refs, including meta and edit refs.

Add tests, which for now just use the same set of test cases as for
patch sets IDs.

Change-Id: If8d9ccb150c7cd5a888b95dce6e61b54bd48562d
VisibleRefFilter: Extract Change.Id from refs, not PatchSet.Id

Change-Id: I6ce2ebb86d95eaa2c47c5e3431a8eaac45b4169c
Parse Change.Ids out of meta refs

This allows visible meta refs in VisibleRefFilter.

Change-Id: Ia7a0a0027109a85204882c8a69b03292a29ece92
VisibleRefFilterIT: Enable notedb

The set of tests and the expected value is almost exactly identical in
the notedb/non-notedb case except for the presence of meta refs. Hack
this into the assert method so we write the notedb-enabled version of
tests, and meta refs are stripped from the expected sets in this case.
This is fairly hacky, but avoids duplication of the test methods
themselves (or, worse, forgetting to duplicate them.)

Change-Id: I8bb071c920aa2c5be7b4d328036af735a020e1e1
Parse body when creating CommitResource

GetCommit depends on the body of both the commit and parent being
parsed, to get the subject.

Change-Id: Ic33854a129926e4138e21a57e9218969486720be