Revamp setup.sh based on my need to reinstall toby.

Summary:
The script is actually idempotent now, and more or less runs
completely through without needing to do work outside the script
(except where it says).  You can't quite run it via ssh like the
top-of-file comments say, since you really need a tty for some of the
steps, but you can easily copy the setup script over to /tmp on the
(new) toby and run it from there.

Major changes:

1) toby now requires a separate disk for phabricator database and
   logs.  This disk is set up to use xfs to make it easy to snapshot
   (though the actual snapshotting is a TODO).

2) toby now uses its ephemeral disk explicitly for
   acceptably-ephemeral purposes: holding the mirrors of the git/hg
   repos, and holding the versions of the repos that phabricator needs
   (it's probably not necessary to have both, but for the moment...)
   These can be refetched from github or hg on need.

3) I had to change apparmor to reference these new locations.  Ugh
   that took a long time to debug, partly because I didn't realize you
   need to explicitly reload apparmor configs after changing them, and
   partly because apt-get kept reinstalling the default apparmor
   config every time I tried to rerun the mysqld install.  Grrr.

4) I made quite a few changes to make the script run idempotently,
   including adding --backup=numbered to all 'cp -sav' calls
   (otherwise cp gets mad if the destination already exists), and
   doing some checks before doing things like creating a new mysql
   user.

5) I added a few package prerequisites (like zip, needed to unzip
   appengine), which we hadn't noticed before.

6) I upped the versino of the appengine SDK from 1.7.1 to 1.7.4.

7) Some things that used to be manual are now automatic, especially
   regarding kiln tokens.  I learned about the --token flag!

8) The phabricator setup instructions have changed since last we had
   to do that, so that part of the script changed a bit.  It's simpler
   now, though I do have to create a few directories I didn't before.

9) I think the script wasn't starting the phabricator daemons before,
   which was a bug.  Now they do.

10) Several places before where we would just emit messages like 'make
    sure to do X', I now also say 'hit <enter> to continue' and wait
    for the user to hit enter.  This is because there's *so* much
    output on the setup run, that these messages were disappearing
    into the aether.

11) I augmented the manual-step instructions for beep-boop, the
    publish-notifier, etc., so people without domain knowledge could
    actually follow them successfully.

12) I start the crontab up last, so we don't start running tasks until
    the setup for them is complete.  That should keep us from getting
    mail-spam while installation is going on.

13) I also added a new rc.local to let me use 'strace -p'.  So silly
    it's off by default in ubuntu...

14) And last but not least: comment out jenkins install.  Chris said
    he'd like to move it to a dedicated machine, so let's not bother
    to set it up now.

Revamp setup.sh based on my need to reinstall toby.

The script is actually idempotent now, and more or less runs
completely through without needing to do work outside the script
(except where it says).  You can't quite run it via ssh like the
top-of-file comments say, since you really need a tty for some of the
steps, but you can easily copy the setup script over to /tmp on the
(new) toby and run it from there.

Major changes:

1) toby now requires a separate disk for phabricator database and
   logs.  This disk is set up to use xfs to make it easy to snapshot
   (though the actual snapshotting is a TODO).

2) toby now uses its ephemeral disk explicitly for
   acceptably-ephemeral purposes: holding the mirrors of the git/hg
   repos, and holding the versions of the repos that phabricator needs
   (it's probably not necessary to have both, but for the moment...)
   These can be refetched from github or hg on need.

3) I had to change apparmor to reference these new locations.  Ugh
   that took a long time to debug, partly because I didn't realize you
   need to explicitly reload apparmor configs after changing them, and
   partly because apt-get kept reinstalling the default apparmor
   config every time I tried to rerun the mysqld install.  Grrr.

4) I made quite a few changes to make the script run idempotently,
   including adding --backup=numbered to all 'cp -sav' calls
   (otherwise cp gets mad if the destination already exists), and
   doing some checks before doing things like creating a new mysql
   user.

5) I added a few package prerequisites (like zip, needed to unzip
   appengine), which we hadn't noticed before.

6) I upped the versino of the appengine SDK from 1.7.1 to 1.7.4.

7) Some things that used to be manual are now automatic, especially
   regarding kiln tokens.  I learned about the --token flag!

8) The phabricator setup instructions have changed since last we had
   to do that, so that part of the script changed a bit.  It's simpler
   now, though I do have to create a few directories I didn't before.

9) I think the script wasn't starting the phabricator daemons before,
   which was a bug.  Now they do.

10) Several places before where we would just emit messages like 'make
    sure to do X', I now also say 'hit <enter> to continue' and wait
    for the user to hit enter.  This is because there's *so* much
    output on the setup run, that these messages were disappearing
    into the aether.

11) I augmented the manual-step instructions for beep-boop, the
    publish-notifier, etc., so people without domain knowledge could
    actually follow them successfully.

12) I start the crontab up last, so we don't start running tasks until
    the setup for them is complete.  That should keep us from getting
    mail-spam while installation is going on.

13) I also added a new rc.local to let me use 'strace -p'.  So silly
    it's off by default in ubuntu...

14) And last but not least: comment out jenkins install.  Chris said
    he'd like to move it to a dedicated machine, so let's not bother
    to set it up now.

Fix permissions.

Get publish-notifier from Khan repo on github, not beneater.

Use root:root instead of obsolete root.root in chown.

Test Plan:
Running setup.py to set up the new toby

Running setup.py to set up the new toby

Reviewers: benkomalo, alpert

Reviewed By: benkomalo

CC: csilvers

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