rejig Element contents a bit
do more of the stringification in __str__ rather than __init__,
so self.contents isn't so heavily modified. self.contents will
always be a list of string-able things; if passed a string or
Element as 'contents' it will just be made into a one-item list,
if passed a list of strings or list of Elements it's kept as
self.contents unchanged. Then in __str__ we do the 'stringify
everything in the list and decide on newlines' stuff.