read_data() reads tabular data from many formats commonly used in data
science (see supported_formats()) and returns a plain data.frame. The
format is inferred from the file extension unless format is given.
If path is a directory (for example as written by generate_to_file()),
all files in it with a recognised extension are read and row-bound.
Because text formats (CSV, JSON, Excel) do not store column types, a
template data frame can be supplied: columns are then coerced to the
classes of the template (factor levels, Date, POSIXct, integer, ...)
with match_types().