OCSADV-27: VoTable parser improvements

Several improvements to the VoTableParser and support for **ucac4** catalog output:
* The parser used fields to distinguish data pieces but it should really use just the **ucd**, a Field's name is not very relevant
* Parse magnitude errors
* Support magnitudes for IR bands
* Parse proper motion if available. An update to the `ProperMotion` class is included
* Fixes a case where **ucac4** returns a magnitude without a band (The value is ignored)
* Minor code formatting fixes
And just in case I misunderstood your question, `F[G[A]]` to `G[F[A]]` is just `sequence` given `Traverse[F]` and `Applicative[G]`, which in the case of `Option` and `\/` you get for free. So

```scala
scala> val a: Option[Throwable \/ String] = Some(\/-("x"))
a: Option[scalaz.\/[Throwable,String]] = Some(\/-(x))

scala> a.sequenceU
res10: scalaz.\/[Throwable,Option[String]] = \/-(Some(x))
```