Our constructors generally have `None` has default arguments, so I feel that setting the fields to `None` seems to always construct an object in a clean (albeit empty) state, after which any ID fields are verified and set.  I'd also prefer in general that `__init__` uses the same code path as `set_ids` (or `set_id` as the case may be) so that only one code path is responsible for the verification logic and for setting all the necessary fields for a particular class.

In the spirit of repeating less code, I think adding a `verify_dxid` method that is usable by the different handlers is a good idea, so I'll add that.