Refactor Target.java and add tons of tests

Make ExplicitTarget have just one URI instead of a list of URIs.
This allows us to not collapse multiple master endpoints into one
target, which will enable better CLI output later on.

E.g. `helios jobs --master master1 --master master2 --json` outputs

```
{
  master1: {A},
  master2: {B}
}
```

instead of

```
{
  A+B
}
```

Return subclass themselves
Merge pull request #163 from spotify/dxia/refactor-target

Refactor Target.java and add tons of tests