OCSADV-27: Model and parser for VoTable

Model, Parser and tests for VoTable xml. The main public function takes an xml node and returns a list of resources containing sidereal targets. Likely, there will be changes to the model as it is integrated into the AGS and UI

As much as possible the parser tries to retain parsing errors, but at the same will extract as many valid targets as possible
Just paste this into your class locally and we can remove it after upgrading.

```scala
// This generalizes over MonadPlus and Bifoldable and you get it for free in scalaz 7.1
// TODO: remove after upgrading to scalaz 7.1
implicit class HackityHack[A,B](abs: List[A \/ B]) {
  def separate: (List[A], List[B]) =
    abs.foldRight((List.empty[A], List.empty[B])) {
      case (-\/(a), (as, bs)) => (a :: as, bs)
      case (\/-(b), (as, bs)) => (as, b :: bs)
    }
}
```

Example.

```scala
scala> List(1.left, "x".right, 3.left, 4.left, "abc".right).separate
res0: (List[Int], List[String]) = (List(1, 3, 4),List(x, abc))
```