Response data cannot be serialized back to JSON

Custom classes don't serialize well and `AttrDict` is no exception. The `Url` model built from JSON cannot be serialized back to JSON. This is a symptom of reimplementing a core language data structure.

**BREAKS BACKWARD COMPATIBILITY**

This PR introduces a failing test to demonstrate the problem. AttrDict is replaced with a native Python dictionary and this breaks backward compatibility - namely dictionaries should behave like dictionaries and so a) `Url` no longer has attribute access to the data members and b) nested dictionaries aren't coerced into `AttrDict`.