Use an enum for infer_dtype return values?
While working in https://github.com/pandas-dev/pandas/pull/29799, it was quite hard to add a new return value from `lib.infer_dtype`.  There are many places where we do something like

```python
inferred_dtype = lib.infer_dtype(values)

if inferred_dtype == "string":
    ...

if inferred_dtype in {"datetime", "integer"}
    ...
```

It was hard to grep for these. Could we instead define an enum

```
class InferredType(enum.Enum):
    STRING: "string"
    INTEGER: "intger"
    MIXED_INTEGER: "mixed-integer"
    ...
```

And then return `InferredType.INTEGER`, and update all our checks for

```python
if inferred_dtype == InferredType.INTEGER
```

I think this should be entirely backwards compatible, since we're still just returning the string.