Defensive copying of Asciidoctor attributes

Asciidoctor may updated values sent via options/attributes with Ruby compatible values. This causes a problem when serializating inputs for caching purposes, as Ruby objects are non-serializable.