Add IPAddress type
The name attr must be lazy so it can see the names attribute in its builder
All models and records seem to work

Language handling is tested.

Refactored how handling raw data is converted to record objects so we can
check that required top-level keys (city, country) are passed to each model
but we can delay building record objects until they're needed.