Implement container contents and better asStrings

Container contents were left unimplemented on the basis that it should
be possible to recover the components from the underlying elements. Now
containers just use a list and the various methods add/inspect/remove to
and from the list along with the actual DOM element. The different
components have been given more detailed asString methods as well.