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
Yeah you can do this with composed `Apply` instances and `sequence`. May be a little hard to follow but here's what it looks like. Import `scalaz._, Scalaz._` if you want to try this; you need several imports for it to work.

```
type T[A] = CatalogProblem \/ A
val app = Apply[Option] compose Apply[T]
val r = pm._1.map(parseDoubleValue(VoTableParser.UCD_PMRA, _))
val d = pm._2.map(parseDoubleValue(VoTableParser.UCD_PMDEC, _))
app.apply2(r, d)(ProperMotion.apply).sequenceU
```

I think this is right. I haven't tried it ;-)