100% speedup for 'ant generate-immutables' when no sources have changed
100% speedup for 'ant generate-immutables' when no sources have changed

Summary:
We don't need to run the `javac` annotation processor on
source files which haven't changed.

This makes use of two Ant features to:

1) After running `javac`'s annotation processor successfully, for each
source file `com/facebook/foo/Bar.java`, touch a file
`build/immutables-buildstamp/com.facebook.foo.Bar.buildstamp`

2) On subsequent builds, for each `*.buildstamp` file, remove the corresponding
`*.java` file from the list of files we need to run the `javac` annotation
processor on

Test Plan:
  % rm -rf build
  % repeat 2 time ant generate-immutables
  Buildfile: /Users/bgertzfield/devtools/buck/build.xml

  generate-immutables:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables-buildstamp
      [javac] Compiling 15 source files

  BUILD SUCCESSFUL
  Total time: 3 seconds
  ant generate-immutables  9.05s user 0.44s system 230% cpu 4.120 total

  ====

  Buildfile: /Users/bgertzfield/devtools/buck/build.xml

  generate-immutables:

  BUILD SUCCESSFUL
  Total time: 0 seconds
  ant generate-immutables  1.50s user 0.17s system 157% cpu 1.061 total

Repeat with `ant generate-test-immutables`:

  % rm -rf build/
  % repeat 2 time ant generate-test-immutables
  Buildfile: /Users/bgertzfield/devtools/buck/build.xml

  checkversion:

  compile-testrunner:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/testrunner/classes
      [javac] Compiling 10 source files to /Users/bgertzfield/devtools/buck/build/testrunner/classes

  compile-bootstrapper:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/bootstrapper/classes
      [javac] Compiling 4 source files to /Users/bgertzfield/devtools/buck/build/bootstrapper/classes
      [javac] [compiled 177 lines in 528 ms: 335.2 lines/s]
      [javac] [4 .class files generated]

  dx:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/dx_classes
      [javac] Compiling 382 source files to /Users/bgertzfield/devtools/buck/build/dx_classes
      [javac] Note: Some input files use unchecked or unsafe operations.
      [javac] Note: Recompile with -Xlint:unchecked for details.
      [javac] Creating empty /Users/bgertzfield/devtools/buck/build/dx_classes/com/android/dx/rop/package-info.class
      [javac] Creating empty /Users/bgertzfield/devtools/buck/build/dx_classes/com/android/dx/ssa/package-info.class
        [jar] Building jar: /Users/bgertzfield/devtools/buck/build/dx.jar

  generate-immutables:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables-buildstamp
      [javac] Compiling 15 source files

  compile:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/classes
      [javac] Compiling 40 source files to /Users/bgertzfield/devtools/buck/build/classes
      [javac] [compiled 4582 lines in 1097 ms: 4176.8 lines/s]
      [javac] [55 .class files generated]
      [javac] Compiling 17 source files to /Users/bgertzfield/devtools/buck/build/classes
      [javac] Compiling 808 source files to /Users/bgertzfield/devtools/buck/build/classes
      [javac] [compiled 116721 lines in 8303 ms: 14057.6 lines/s]
      [javac] [1499 .class files generated]

  generate-test-immutables:
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables-tests
      [mkdir] Created dir: /Users/bgertzfield/devtools/buck/build/immutables-tests-buildstamp
      [javac] Compiling 1 source file

  BUILD SUCCESSFUL
  Total time: 22 seconds
  ant generate-test-immutables  50.72s user 2.02s system 233% cpu 22.547 total

  ===

  Buildfile: /Users/bgertzfield/devtools/buck/build.xml

  checkversion:

  compile-testrunner:

  compile-bootstrapper:
      [javac] Compiling 4 source files to /Users/bgertzfield/devtools/buck/build/bootstrapper/classes
      [javac] [compiled 177 lines in 719 ms: 246.1 lines/s]
      [javac] [4 .class files generated]

  dx:

  generate-immutables:

  compile:

  generate-test-immutables:

  BUILD SUCCESSFUL
  Total time: 3 seconds
  ant generate-test-immutables  6.04s user 0.44s system 183% cpu 3.532 total

Repeat after `touch`ing a file:

  % touch test/com/facebook/buck/immutables/Type.java
  % time ant generate-test-immutables
  Buildfile: /Users/bgertzfield/devtools/buck/build.xml

  checkversion:

  compile-testrunner:

  compile-bootstrapper:
      [javac] Compiling 4 source files to /Users/bgertzfield/devtools/buck/build/bootstrapper/classes
      [javac] [compiled 177 lines in 554 ms: 319.4 lines/s]
      [javac] [4 .class files generated]

  dx:

  generate-immutables:

  compile:

  generate-test-immutables:
      [javac] Compiling 1 source file

  BUILD SUCCESSFUL
  Total time: 3 seconds
  ant generate-test-immutables  7.37s user 0.46s system 192% cpu 4.069 total

romanoid/buck,facebook/buck,lukw00/buck,raviagarwal7/buck,mogers/buck,lukw00/buck,dsyang/buck,mikekap/buck,daedric/buck,artiya4u/buck,nguyentruongtho/buck,zhuxiaohao/buck,LegNeato/buck,justinmuller/buck,rhencke/buck,mogers/buck,zhan-xiong/buck,facebook/buck,Learn-Android-app/buck,JoelMarcey/buck,liuyang-li/buck,shs96c/buck,stuhood/buck,zpao/buck,shybovycha/buck,zhuxiaohao/buck,mnuessler/buck,1yvT0s/buck,kageiit/buck,daedric/buck,daedric/buck,vine/buck,dushmis/buck,Distrotech/buck,robbertvanginkel/buck,JoelMarcey/buck,mnuessler/buck,kageiit/buck,zhuxiaohao/buck,illicitonion/buck,justinmuller/buck,Addepar/buck,illicitonion/buck,darkforestzero/buck,bocon13/buck,mogers/buck,neonichu/buck,zpao/buck,Distrotech/buck,Dominator008/buck,luiseduardohdbackup/buck,Dominator008/buck,darkforestzero/buck,brettwooldridge/buck,luiseduardohdbackup/buck,robbertvanginkel/buck,romanoid/buck,clonetwin26/buck,sdwilsh/buck,siddhartharay007/buck,tgummerer/buck,k21/buck,liuyang-li/buck,rmaz/buck,janicduplessis/buck,marcinkwiatkowski/buck,rhencke/buck,artiya4u/buck,Distrotech/buck,dsyang/buck,clonetwin26/buck,daedric/buck,marcinkwiatkowski/buck,zhan-xiong/buck,clonetwin26/buck,brettwooldridge/buck,Dominator008/buck,dushmis/buck,raviagarwal7/buck,raviagarwal7/buck,justinmuller/buck,nguyentruongtho/buck,Addepar/buck,mogers/buck,romanoid/buck,OkBuilds/buck,pwz3n0/buck,SeleniumHQ/buck,stuhood/buck,stuhood/buck,romanoid/buck,nguyentruongtho/buck,zhan-xiong/buck,davido/buck,brettwooldridge/buck,Dominator008/buck,clonetwin26/buck,darkforestzero/buck,rhencke/buck,illicitonion/buck,Learn-Android-app/buck,LegNeato/buck,MarkRunWu/buck,rowillia/buck,k21/buck,dushmis/buck,ilya-klyuchnikov/buck,romanoid/buck,shs96c/buck,MarkRunWu/buck,zhan-xiong/buck,grumpyjames/buck,rhencke/buck,mogers/buck,vschs007/buck,rmaz/buck,robbertvanginkel/buck,SeleniumHQ/buck,ilya-klyuchnikov/buck,brettwooldridge/buck,mogers/buck,vine/buck,LegNeato/buck,shs96c/buck,illicitonion/buck,k21/buck,dsyang/buck,marcinkwiatkowski/buck,OkBuilds/buck,darkforestzero/buck,rowillia/buck,grumpyjames/buck,Dominator008/buck,shs96c/buck,dushmis/buck,dushmis/buck,vine/buck,marcinkwiatkowski/buck,darkforestzero/buck,marcinkwiatkowski/buck,mikekap/buck,daedric/buck,pwz3n0/buck,stuhood/buck,janicduplessis/buck,LegNeato/buck,k21/buck,artiya4u/buck,zhuxiaohao/buck,mogers/buck,SeleniumHQ/buck,sdwilsh/buck,grumpyjames/buck,sdwilsh/buck,davido/buck,1yvT0s/buck,zhan-xiong/buck,pwz3n0/buck,OkBuilds/buck,dpursehouse/buck,zhuxiaohao/buck,Dominator008/buck,SeleniumHQ/buck,neonichu/buck,hgl888/buck,k21/buck,neonichu/buck,artiya4u/buck,SeleniumHQ/buck,JoelMarcey/buck,rmaz/buck,zpao/buck,LegNeato/buck,justinmuller/buck,daedric/buck,Distrotech/buck,bocon13/buck,vschs007/buck,shybovycha/buck,shs96c/buck,raviagarwal7/buck,ilya-klyuchnikov/buck,sdwilsh/buck,LegNeato/buck,Heart2009/buck,shybovycha/buck,bocon13/buck,mnuessler/buck,dsyang/buck,dpursehouse/buck,illicitonion/buck,dsyang/buck,sdwilsh/buck,vine/buck,Addepar/buck,zhuxiaohao/buck,nguyentruongtho/buck,brettwooldridge/buck,illicitonion/buck,Addepar/buck,grumpyjames/buck,Addepar/buck,mikekap/buck,rmaz/buck,facebook/buck,1yvT0s/buck,luiseduardohdbackup/buck,janicduplessis/buck,davido/buck,mikekap/buck,vschs007/buck,rmaz/buck,artiya4u/buck,ilya-klyuchnikov/buck,rhencke/buck,justinmuller/buck,tgummerer/buck,vine/buck,dsyang/buck,mikekap/buck,dushmis/buck,robbertvanginkel/buck,bocon13/buck,janicduplessis/buck,artiya4u/buck,raviagarwal7/buck,Addepar/buck,vschs007/buck,robbertvanginkel/buck,SeleniumHQ/buck,OkBuilds/buck,daedric/buck,mikekap/buck,siddhartharay007/buck,dsyang/buck,clonetwin26/buck,vine/buck,k21/buck,marcinkwiatkowski/buck,stuhood/buck,justinmuller/buck,davido/buck,rowillia/buck,zhuxiaohao/buck,rowillia/buck,rhencke/buck,kageiit/buck,vine/buck,dpursehouse/buck,mikekap/buck,mikekap/buck,nguyentruongtho/buck,mikekap/buck,Heart2009/buck,clonetwin26/buck,mogers/buck,Dominator008/buck,Dominator008/buck,sdwilsh/buck,Distrotech/buck,illicitonion/buck,robbertvanginkel/buck,janicduplessis/buck,tgummerer/buck,Learn-Android-app/buck,shybovycha/buck,Addepar/buck,pwz3n0/buck,Heart2009/buck,rmaz/buck,bocon13/buck,liuyang-li/buck,hgl888/buck,robbertvanginkel/buck,pwz3n0/buck,illicitonion/buck,tgummerer/buck,Dominator008/buck,rowillia/buck,shs96c/buck,rhencke/buck,Distrotech/buck,vschs007/buck,1yvT0s/buck,raviagarwal7/buck,tgummerer/buck,dsyang/buck,JoelMarcey/buck,tgummerer/buck,ilya-klyuchnikov/buck,shybovycha/buck,stuhood/buck,liuyang-li/buck,illicitonion/buck,MarkRunWu/buck,shs96c/buck,liuyang-li/buck,LegNeato/buck,siddhartharay007/buck,Learn-Android-app/buck,justinmuller/buck,Dominator008/buck,mogers/buck,mnuessler/buck,JoelMarcey/buck,mogers/buck,SeleniumHQ/buck,mnuessler/buck,rmaz/buck,romanoid/buck,Addepar/buck,sdwilsh/buck,k21/buck,justinmuller/buck,rowillia/buck,1yvT0s/buck,zpao/buck,dushmis/buck,Heart2009/buck,LegNeato/buck,robbertvanginkel/buck,brettwooldridge/buck,romanoid/buck,facebook/buck,k21/buck,pwz3n0/buck,SeleniumHQ/buck,darkforestzero/buck,pwz3n0/buck,clonetwin26/buck,Heart2009/buck,illicitonion/buck,dsyang/buck,SeleniumHQ/buck,marcinkwiatkowski/buck,vschs007/buck,brettwooldridge/buck,grumpyjames/buck,raviagarwal7/buck,Heart2009/buck,rhencke/buck,Learn-Android-app/buck,dpursehouse/buck,JoelMarcey/buck,vschs007/buck,shs96c/buck,kageiit/buck,clonetwin26/buck,liuyang-li/buck,Distrotech/buck,justinmuller/buck,neonichu/buck,1yvT0s/buck,brettwooldridge/buck,darkforestzero/buck,Learn-Android-app/buck,romanoid/buck,pwz3n0/buck,rmaz/buck,stuhood/buck,1yvT0s/buck,OkBuilds/buck,lukw00/buck,kageiit/buck,liuyang-li/buck,bocon13/buck,Learn-Android-app/buck,rmaz/buck,Dominator008/buck,siddhartharay007/buck,janicduplessis/buck,nguyentruongtho/buck,grumpyjames/buck,mnuessler/buck,Addepar/buck,vschs007/buck,dpursehouse/buck,daedric/buck,OkBuilds/buck,rmaz/buck,kageiit/buck,vschs007/buck,Distrotech/buck,stuhood/buck,rowillia/buck,raviagarwal7/buck,brettwooldridge/buck,ilya-klyuchnikov/buck,shybovycha/buck,luiseduardohdbackup/buck,Heart2009/buck,romanoid/buck,rmaz/buck,clonetwin26/buck,zpao/buck,davido/buck,robbertvanginkel/buck,bocon13/buck,kageiit/buck,justinmuller/buck,siddhartharay007/buck,JoelMarcey/buck,bocon13/buck,LegNeato/buck,darkforestzero/buck,rowillia/buck,pwz3n0/buck,ilya-klyuchnikov/buck,pwz3n0/buck,zhan-xiong/buck,hgl888/buck,clonetwin26/buck,ilya-klyuchnikov/buck,mikekap/buck,davido/buck,vine/buck,OkBuilds/buck,bocon13/buck,vschs007/buck,rmaz/buck,liuyang-li/buck,tgummerer/buck,artiya4u/buck,davido/buck,shs96c/buck,JoelMarcey/buck,vine/buck,luiseduardohdbackup/buck,darkforestzero/buck,daedric/buck,raviagarwal7/buck,shs96c/buck,sdwilsh/buck,siddhartharay007/buck,liuyang-li/buck,facebook/buck,hgl888/buck,dsyang/buck,stuhood/buck,JoelMarcey/buck,raviagarwal7/buck,neonichu/buck,OkBuilds/buck,clonetwin26/buck,shs96c/buck,Heart2009/buck,ilya-klyuchnikov/buck,vine/buck,k21/buck,shs96c/buck,zhan-xiong/buck,SeleniumHQ/buck,grumpyjames/buck,davido/buck,stuhood/buck,lukw00/buck,shybovycha/buck,shybovycha/buck,vschs007/buck,Distrotech/buck,davido/buck,k21/buck,sdwilsh/buck,Addepar/buck,zhuxiaohao/buck,bocon13/buck,lukw00/buck,hgl888/buck,neonichu/buck,grumpyjames/buck,marcinkwiatkowski/buck,Addepar/buck,MarkRunWu/buck,tgummerer/buck,hgl888/buck,artiya4u/buck,marcinkwiatkowski/buck,siddhartharay007/buck,LegNeato/buck,nguyentruongtho/buck,sdwilsh/buck,sdwilsh/buck,siddhartharay007/buck,janicduplessis/buck,k21/buck,justinmuller/buck,zpao/buck,romanoid/buck,k21/buck,OkBuilds/buck,Learn-Android-app/buck,OkBuilds/buck,raviagarwal7/buck,illicitonion/buck,romanoid/buck,davido/buck,robbertvanginkel/buck,marcinkwiatkowski/buck,davido/buck,OkBuilds/buck,Learn-Android-app/buck,dpursehouse/buck,mogers/buck,hgl888/buck,mnuessler/buck,janicduplessis/buck,SeleniumHQ/buck,mikekap/buck,romanoid/buck,zhan-xiong/buck,dsyang/buck,dushmis/buck,mnuessler/buck,clonetwin26/buck,darkforestzero/buck,1yvT0s/buck,LegNeato/buck,zhan-xiong/buck,Addepar/buck,illicitonion/buck,zhan-xiong/buck,Heart2009/buck,zhan-xiong/buck,neonichu/buck,k21/buck,dushmis/buck,sdwilsh/buck,rmaz/buck,justinmuller/buck,raviagarwal7/buck,rhencke/buck,MarkRunWu/buck,shybovycha/buck,Learn-Android-app/buck,lukw00/buck,JoelMarcey/buck,mikekap/buck,darkforestzero/buck,brettwooldridge/buck,shybovycha/buck,robbertvanginkel/buck,luiseduardohdbackup/buck,liuyang-li/buck,facebook/buck,lukw00/buck,pwz3n0/buck,vine/buck,mnuessler/buck,luiseduardohdbackup/buck,lukw00/buck,lukw00/buck,dushmis/buck,artiya4u/buck,JoelMarcey/buck,darkforestzero/buck,grumpyjames/buck,hgl888/buck,grumpyjames/buck,siddhartharay007/buck,janicduplessis/buck,MarkRunWu/buck,marcinkwiatkowski/buck,dsyang/buck,neonichu/buck,JoelMarcey/buck,romanoid/buck,MarkRunWu/buck,tgummerer/buck,robbertvanginkel/buck,artiya4u/buck,robbertvanginkel/buck,tgummerer/buck,zpao/buck,daedric/buck,artiya4u/buck,Dominator008/buck,bocon13/buck,illicitonion/buck,LegNeato/buck,marcinkwiatkowski/buck,liuyang-li/buck,vschs007/buck,janicduplessis/buck,grumpyjames/buck,zhan-xiong/buck,rhencke/buck,1yvT0s/buck,dpursehouse/buck,janicduplessis/buck,davido/buck,Distrotech/buck,vschs007/buck,rowillia/buck,Learn-Android-app/buck,lukw00/buck,rhencke/buck,Addepar/buck,daedric/buck,shybovycha/buck,OkBuilds/buck,tgummerer/buck,neonichu/buck,LegNeato/buck,brettwooldridge/buck,stuhood/buck,SeleniumHQ/buck,Distrotech/buck,shybovycha/buck,rowillia/buck,dpursehouse/buck,daedric/buck,lukw00/buck,hgl888/buck,brettwooldridge/buck,rowillia/buck,luiseduardohdbackup/buck,dsyang/buck,MarkRunWu/buck,JoelMarcey/buck,SeleniumHQ/buck,OkBuilds/buck,zhan-xiong/buck,shs96c/buck,janicduplessis/buck,davido/buck,justinmuller/buck,luiseduardohdbackup/buck,shybovycha/buck,marcinkwiatkowski/buck,ilya-klyuchnikov/buck,darkforestzero/buck,facebook/buck,rowillia/buck,brettwooldridge/buck,bocon13/buck,ilya-klyuchnikov/buck,daedric/buck,clonetwin26/buck,ilya-klyuchnikov/buck,ilya-klyuchnikov/buck,raviagarwal7/buck,zhuxiaohao/buck,sdwilsh/buck,grumpyjames/buck