
  -spec read_file(Filename) -> {ok, Binary} | {error, Reason}
                     when
                         Filename :: name_all(),
                         Binary :: binary(),
                         Reason ::
                             posix() | badarg | terminated | system_limit.

  Returns {ok, Binary}, where Binary is a binary data object
  that contains the contents of Filename, or {error, Reason} if
  an error occurs.

  Typical error reasons:

  enoent:
    The file does not exist.

  eacces:
    Missing permission for reading the file, or for searching one
    of the parent directories.

  eisdir:
    The named file is a directory.

  enotdir:
    A component of the filename is not a directory. On some
    platforms, enoent is returned instead.

  enomem:
    There is not enough memory for the contents of the file.
