Add return values for methods that create new objects (add_FOO).

This commit updates the add_FOO methods so that the calling code can
access the new object that is created. It also updates the various
`save` methods to return `self` - which allows for chaining of methods
and fluent interfaces.