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