Store draft PatchLineComments in Git notes

The draft comments for a user will be stored in their own unique ref
in the All-Users repository. The ref will look like
'refs/users/34/1234/comments-5678' where the user's accountId is 1234
and the change's changeId is 5678. Since these commits will live in a
different repository than the change at a different ref, I created two
new classes (ChangeDraftUpdate and DraftCommentNotes) to mimic the
workflow of ChangeNotes and ChangeUpdate.

The basic workflow is that when a draft comment is added, it will be
written to a note attached to the user's ref for the given change in
the All-Users repository. However, whenever a draft is published or
deleted, then it should be removed from that location and instead
written to the same place as the other published comments (in the
notes attached to the commits in the meta ref related to the given
change).

Additionally, I added a helper method to TestChanges to help construct
ChangeDraftUpdates for test. Finally, I added test coverage for
storing draft PatchLineComments in the notedb to ChangeNotesTest.

Change-Id: I178b039529937c2a65a0efed388ee6ca1043aaa7
Move Change out of AbstractChangeNotes

In order to load all draft PatchLineComments for a given author, we
will need to be able to scan all the refs in their namespace of the
All-Users repository and load the drafts in without access to a Change
object (we will just have the ChangeId from the refname). Therefore, I
removed that field from AbstractChangeNotes and put the Change object
just in ChangeNotes because some callers of ChangeNotes need the
Change object. I put the ChangeId in the AbstractChangeNotes instead,
since both ChangeNotes and DraftCommentNotes need that.

Change-Id: Icd3b72b10dd39a205c3ec420b25a6740b9d376af
Expose the history of all reviewers ever on a change

For the purpose of deleting a draft patch-set and all of its comments,
we need a list of every user who has ever been a reviewer on that
change because those are all the users who could possibly have a draft
comment on this change. With this information, we will be able to scan
the draft refs for all those users to ensure that we delete every
comment for this draft patch-set.

Change-Id: I86a8c5242d62991c3c885911f37438e4f422b0da
Let RefControlTest be responsible for creating own test projects

All test cases which test inheritance of the access rights assume
existence of two projects: "local" and "parent", where "parent"
is the parent of the "local".

The cc00e0056991355b8780bebd221acf3baf1f55e7 moved the creation of
the "parent" into the Util class and it wasn't intuitive to follow
what exactly the "util.getParentConfig()" meant.

Remove the creation of the "parent" project from the Util class and
create the "parent" in the RefControlTest. Also, make sure that "parent"
is set to be the parent of the "local" in the setUp method.

Change-Id: I991a9bc25ca7609b5d9e15e54167446c7b0aa6cf
Fix the camel case of a (test) method name

Change-Id: I99e2f0e61fa90cb6919be2af155b1cb6e12b520f
Add modifyAccount capability to CapabilityInfo

Missed in Icc105c39, causing CapabilitiesIT to fail.

Change-Id: If6e4c53d54c06ce9b1402f20b782f4a9b8e59f0e
Merge changes I86a8c524,Icd3b72b1,I178b0395

* changes:
  Expose the history of all reviewers ever on a change
  Move Change out of AbstractChangeNotes
  Store draft PatchLineComments in Git notes