improve custom layout for boiling point draft
don't make duplicate gradients or arrowheads

also don't make duplicate <defs> element
xmlns and xmlns:xlink namespaces for SVG container

The namespace attributes make the SVG valid when copied
out of the DOM.
move SVG attributes from style to attributes

Doing this for SVG elements where this is valid makes the
SVG simpler when exporting out of the DOM.

Some attributes expressed as styles in the extracted SVG
didn't render correctly.

Example:

A <circle> element with fill-opacity and fill defined in a
style attribute didn't render when extracted:

  style="fill-opacity: 1; fill: #pos-grad;"

But did render correctly when specified as attributes:

  fill-opacity="1" fill="url(#pos-grad)"