Allow objects to store their details

It's a pain to have to keep around both a list/client/segment object and a corresponding hash of details. These changes allow storing of the details as attributes on the object in standard Ruby notation (underscored instead of camel cased).

The changes are backwards-compatible. The `details` methods will still return the response hash.