First commit for GA4GH common classes and Picard runner

Hi Ilia,

I think you're right - I also get an error, when I remove the `.setServicePath("/")` in a similarly structured program within the `api-client-java` repository:

```
com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
Not Found
 at com.google.cloud.genomics.utils.Paginator$6$1$1.createSearch(Paginator.java:607)
        at com.google.cloud.genomics.utils.Paginator$6$1$1.apply(Paginator.java:585)
        at com.google.cloud.genomics.utils.Paginator$6$1$1.apply(Paginator.java:582)
        at com.google.common.base.Present.transform(Present.java:71)
        at com.google.cloud.genomics.utils.Paginator$6$1.computeNext(Paginator.java:581)
        at com.google.cloud.genomics.utils.Paginator$6$1.computeNext(Paginator.java:578)
        at com.google.common.collect.AbstractSequentialIterator.next(AbstractSequentialIterator.java:77)
        at com.google.common.collect.Iterators.advance(Iterators.java:904)
        at com.google.common.collect.Iterables$10.iterator(Iterables.java:865)
...
```

I then wanted to see more closely why this is, so working [SearchReadsCommand.java](https://github.com/googlegenomics/api-client-java/blob/f8e7b4c4763e97f66a09389b6316084b5eb16160/src/main/java/com/google/cloud/genomics/api/client/commands/SearchReadsCommand.java) which extends
[SearchCommand.java](https://github.com/googlegenomics/api-client-java/blob/f8e7b4c4763e97f66a09389b6316084b5eb16160/src/main/java/com/google/cloud/genomics/api/client/commands/SearchCommand.java), which in turn extends [BaseCommand.java](https://github.com/googlegenomics/api-client-java/blob/ad6d67fea093673cbd5d78f84dfc52978342f028/src/main/java/com/google/cloud/genomics/api/client/commands/BaseCommand.java), I can see that `rootURL` is the following:

```
public String rootUrl = "https://www.googleapis.com/genomics/v1beta";
```

Then since the `SearchReadsCommand.java` uses the [Paginator.java](https://github.com/googlegenomics/utils-java/blob/111a10139ebc90ee8d759368a64fe10aa31c3b61/src/main/java/com/google/cloud/genomics/utils/Paginator.java), I then noticed that searches are basically a `Genomics.Reads.Search`.  Then looking in `Genomics.java`, I can see the `REST_PATH` does not start or end with a `/`, and then gets sent as the third argument in the protected `Search()` method below:

```
    public class Search extends GenomicsRequest<com.google.api.services.genomics.model.SearchReadsResponse> {

      private static final String REST_PATH = "reads/search";
	...
	protected Search(com.google.api.services.genomics.model.SearchReadsRequest content) {
        super(Genomics.this, "POST", REST_PATH, content, com.google.api.services.genomics.model.SearchReadsResponse.class);
      }

```

Then looking at `GenomicsRequest.java`, I see the following:

```
public abstract class GenomicsRequest<T> extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest<T> {
```

I then see that [AbstractGoogleJsonClientRequest.java](https://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/googleapis/services/json/AbstractGoogleJsonClientRequest.java?r=5591669e5a8661134c3816528371c8dffc3fd580) extends [AbstractGoogleClientRequest.java](https://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/googleapis/services/AbstractGoogleClientRequest.java?r=d08f4d086aca8ff35ce739decfad3dba43e4327e), where I can see the URL gets constructed in the following way:

```
 public GenericUrl buildHttpRequestUrl() {
    return new GenericUrl(
        UriTemplate.expand(abstractGoogleClient.getBaseUrl(), uriTemplate, this, true));
  }

```

And when I look at the `expand()` function in [UriTemplate.java](https://code.google.com/p/google-http-java-client/source/browse/google-http-client/src/main/java/com/google/api/client/http/UriTemplate.java?spec=svne602ac3644d3cca566758cb3892d77ec7a547567&r=e602ac3644d3cca566758cb3892d77ec7a547567), I notice that the strings are just concatenated:

```
public static String expand(String baseUrl, String uriTemplate, Object parameters,
      boolean addUnusedParamsAsQueryParams) {
    String pathUri;
    if (uriTemplate.startsWith("/")) {
      // Remove the base path from the base URL.
      GenericUrl url = new GenericUrl(baseUrl);
      url.setRawPath(null);
      pathUri = url.build() + uriTemplate;
    } else if (uriTemplate.startsWith("http://") || uriTemplate.startsWith("https://")) {
      pathUri = uriTemplate;
    } else {
      pathUri = baseUrl + uriTemplate;
    }
    return expand(pathUri, parameters, addUnusedParamsAsQueryParams);
  }
```

This would make sense why it would fail with a `404 Not Found` error message, and that a `/` would be required and set via `.setServicePath("/")`.

Hope it helps,
Paul