Attempt 2: Import the JavaWriter rewrite from Dagger 2.

This is a complete break from the 2.x API. If we're going to merge
this, we should branch that project.

I've done my best to keep commit history complete.

copy history with filter-branch:
http://stackoverflow.com/a/20974621/40013

history cleaning command is dumb:
```
rm `find . -type f -not -path '*writer*' | grep -v '^\./\.git/'` || echo
```

remove merge commits:
https://github.com/kohsuke/git-filter-branch-tools/blob/master/remove-pointless-commit.rb