Convert arc visualization into library object

Convert the arc visualization from an effectively-standalone procedural
routine into a library object which can be used to generate arc
visualizations from various input sources and for various output
encodings.