is_[non_]empty_model returns TRUE if the input is an
[non] empty model. (has_terms is used to determine that a variable
is a model object.) The model is considered empty if there are no
factors and no intercept. The assert_* functions return nothing
but throw an error if the corresponding is_* function returns
FALSE.