OCSADV-154 target analysis

This is kind of random. I needed to write a little program to gather some stats on the target types we were using, and in the process relocated the `edu.gemini.shared.util.immutable` ↔︎ Scala conversion syntax and added another `parseDocument` overload to `PioSpXmlParser`. 

Just to confirm, this needs to go into the **develop** branch; it's not for December.
I couldn't find any references to this, but I have this vague idea that it was better to use a val function for implicits like
implicit val asGeminiOpt = (a:scala.Option[A]) => new ScalaOptionOps(a)

It may be problematic to have the type A on the val though