Add support to auto-update your .arcrc based on changes to the default .arcrc.

We add a new default khan-arcrc in khan-bin/khan-arcrc.  Whenever we
sync the new arcanist repo (once per day), we may also get a new copy
of the default khan-arcrc.  At that time, we check if the new
khan-arcrc differs from the one you have installed in ~/.arcrc, and if
so it updates it so they're consistent.

A new khan/do_not_auto_update field is added to suppress this behavior
on a field-by-field basis, and I set up a default value in the
khan-arcrc to provide an example of how to use it.

Tested: additions to arc_unittest, and manual testing on my personal
.arcrc.
Fix a bug in relative-pathname logic, and clean up lint errors.
Add support to auto-update your .arcrc based on changes to the default .arcrc.

Summary:
We add a new default khan-arcrc in khan-bin/khan-arcrc.  Whenever we
sync the new arcanist repo (once per day), we may also get a new copy
of the default khan-arcrc.  At that time, we check if the new
khan-arcrc differs from the one you have installed in ~/.arcrc, and if
so it updates it so they're consistent.

A new khan/do_not_auto_update field is added to suppress this behavior
on a field-by-field basis, and I set up a default value in the
khan-arcrc to provide an example of how to use it.

Fix a bug in relative-pathname logic, and clean up lint errors.

Fixes based on jamie's codereview feedback.

Main one is we emit changes we make to the .arcrc, so people aren't
surprised.  We also give instructions on how to turn such changes off.

I also fixed the do_not_auto_update field to include the one field we
actually definitely do *not* want to be auto-updated: the
script-name.  That's because where it is depends on where you have
stable checked out on your path.

Don't set scriptandregex.script at all by default.

We don't know the script location on a given user's machine, so we
can't set this up reliably.  Having a value that's wrong gives a
very cryptic error message to the user; having no value at all gives
an only somewhat cryptic error message.  We'll go with the latter for
now.

I still leave in an example of what this field might look like, to
make it easier for folks to fill it in.

Add a bunch more entries to do_not_auto_update, especially itself!

If someone changes do_not_auto_update (adding new fields or whatever),
we don't want that to be overridden by whatever is in the default
khan-arcrc file.  So make sure do_not_auto_update is itself in the
no-auto-update list.

I also put in everything else that it's ok if the user changes after
we set up the default value -- for instance, the 'mail' alias.

Note that these entries will still get *created* the first time,
unless the user happens to have created a
'khan/do_not_auto_update' field that turns that off, but once they are
created, they won't be changed again, at least by the auto-update
functionality.

(Note: this change will make it difficult for us to automatically add
stuff to khan/do_not_auto_update in the future.  We may have to
special-case the handling of that one day.)

Change the formatting to match what json.dumps() does and remove unneeded line.

The unneeded line is 'linter.scriptandregex.script' in
khan/do_not_auto_update: we do not currently set that field in the
default .arcrc, since its value is user-dependent.  So no need to
not-auto-update it.

Fix whitespace, dunno how that got messed up.

Test Plan:
additions to arc_unittest, and manual testing on my personal
.arcrc.

Reviewers: jlfwong

Reviewed By: jlfwong

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