Defines a struct which stores a template and its information.
collection() :: %{optional(binary()) => t()}
t() :: %Serum.Template{ ast: Macro.t(), file: binary(), include_resolved?: boolean(), name: binary(), type: type() }
type() :: :template | :include
new(Macro.t(), binary(), type(), binary()) :: t()