REF: implement io.pytables.DataCol._get_atom
companion to #30101 with promised payoff (logically orthgonal, but will have merge conflict when the time comes)

This implements _get_atom and makes only one call to it on 3949.  By making all the relevant methods into classmethods, we can call it before we've instantiated an instance.  Then following #30100, we'll be able to pass `typ` to the constructor instead of pinning it.  This in turn will let us pass `pos` instead of calling `set_pos`.

Also after both this and #30101, we can get to rip out a bunch of no-longer-needed state-altering methods.
updated to use `is_foo_dtype`, and green ex the resource warning thanks