Automatically add the correct '--onto' flag for arc land.

Summary:
cf.
   https://secure.phabricator.com/T3082

There, I wrote:

   Our workflow has a hiccup with arc land. I think our workflow is
   pretty standard, so I'm wondering if we're misunderstanding
   something or there's a possible feature improvement. (I don't know
   git very well, so I'm going to be rather verbose in the hopes at
   least some of the words make sense...)

   We have a project hosted remotely, that has a master branch and
   several other remote-tracking branches. Most people work on one of
   the other branches, say the newfeature branch. They want to do work
   and then push it to the newfeature branch on github. Eventually,
   we'll merge newfeature into master, but that's far in the future.

   The way I've been telling them to do it is to git checkout
   newfeature, then git branch --track work && git checkout work, and
   do their coding in the work branch. When they're done, they do arc
   mail which correctly diffs against newfeature. The problem comes
   when it's time to do arc land. While arc mail diffs against
   newfeature, arc land wants to land on master (unless we remember to
   explicitly specify --onto).

   So here's the feature request: if you run arc land on a local
   tracking branch (work), and the branch it's tracking is itself a
   remote tracking branch (newfeature) land onto the remote tracking
   branch by default, rather than always landing on master by
   default. (Or maybe there's some better way of figuring out to land
   onto newfeature rather than master in our use case.) If you want to
   explicitly land on master, you can still do --onto master.

epriestley responded:

   I also would not accept a patch which automatically selects
   upstreams/tracking/remotes for arc land because of our negative
   experience with such rules for commit range bases

He's willing to have a DSL that we could use to say how 'arc land'
decides where to land, but while waiting for that, we'll just hack
'arc land' to add the appropriate --onto flag for us: we always land
onto our parent branch (the one we're tracking).

I'm not *positive* that will do the right thing for grandchild
branches, but it's definitely better than the alternatives.

Test Plan:
New test cases.  Also, modified the code to not actually do anything
for 'arc land':
    if arc_args[0] == 'land':
        arc_args = add_onto_for_arc_land(arc_args)
        raise ValueError(arc_args)

and ran 'arc land' in the following directories:
   webapp, stable branch
   webapp, a feature branch I had created ('git checkout -b test')
   webapp, a feaure branch I had created with tracking turned off
     (commented out autosetupmerge in my .gitconfig.khan, and ran
     'git checkout -b test2')

In the first and third case, I got a runtime error, as expected.  In
the second case, it said ['arc', 'land', '--onto', 'master'], which is
also expected.

Reviewers: chris, benkomalo

Reviewed By: benkomalo

Differential Revision: http://phabricator.khanacademy.org/D2215