Type writer subclasses are now top level. JavaWriter is for multiple types.

This changes JavaWriter from having parity with a single Java file containing multiple types to each TypeWriter subclass being representative of a single Java file (thus eliminating multiple types in a file). JavaWriter instead becomes an aggregator of top-level types and supports emitting them as a tree of files to a Path, File, or Filer.

Closes #84.

@gk5885 @swankjesse 
FYI this is a new file. The old `JavaWriterTest` was moved to `TypeWriterTest` but either this class didn't differ enough or the new file different enough that git didn't track the move.