Support directory trees in assignments

JVM languages require a particular directory structure, so this lets us
create idiomatic scala, clojure, etc exercises.