Save copy of document, unify iter and items

As we discussed on IRC, this saves a copy of the document on load so that you can use it at save time to store revision history, avoid saving when nothing has changed, etc.

Also changed __iter__ to use a generator expression and items to use that to make a list; avoids duplicate code.