Make empty print statements actually print
Changelog and version updates for v0.87.0
Ignore build/info/ua_version.
Java: DXSearch.findExecutions generalizes and replaces findJobs.

DXSearch.findExecutions supports queries on the following new fields:
class, includeSubjobs, name (including exact match, glob, and regexp
search), executable, tags, properties, rootExecution, originJob,
parentJob, parentAnalysis, state. It also supports requesting the
job/analysis describe data with includeDescribeOutput.

Compatibility note: although this change is breaking-- classes
previously named FindJobs* are renamed to FindExecutions*-- if you
didn't hold any references to FindJobsRequestBuilder or
FindJobsResult (i.e. you formulated and executed your query in one line)
no changes are likely needed to your code. If you did hold such
references, change instances of FindJobsRequestBuilder and
FindJobsResult to FindExecutionsRequestBuilder<DXJob> and
FindExecutionsResult<DXJob> respectively.

Ancillary changes (non-breaking):

* DXExecution now provides factory methods getInstance and
  getInstanceWithEnvironment that return a DXJob or DXAnalysis, as
  appropriate, given its ID.

* The DXExecutable interface now requires the method getId, same as
  provided by DXObject (without which, instances of DXExecutable are not
  terribly useful).

* DXSearch.findDataObjects now supports compound queries on tags for
  parity with the new functionality in findExecutions. Use the class
  DXSearch.TagsQuery to create such queries.

* DXDataObject.Builder.addTags and addTypes now accept any
  Collection<String> instead of just a List, and they may now be called
  more than once to append to the tags/types to be set.

* DXJob.Describe and DXAnalysis.Describe now inherit common fields from
  a new superclass, DXExecution.Describe.

* DXJob.Describe and DXAnalysis.Describe now support getProperties and
  getTags for retrieving job metadata.

* ExecutableRunner now supports addTags, putProperty, and
  putAllProperties for setting executable metadata.

* ExecutableRunner.dependsOn now accepts any DXExecution instead of only
  DXJob objects.

* The following methods in ExecutableRunner were renamed to be
  consistent with those in DXDataObject.Builder (delegate methods are
  left for compatibility): inFolder -> setFolder, inProject ->
  setProject, withDetails -> setDetails, withInput -> setInput, withName
  -> setName, withRawInput -> setRawInput.
Java bindings: alphabetize methods.
Java bindings: check DNAnexus object IDs upon handler creation
Java bindings: allow streaming access to find{DataObjects,Executions}.

DXSearch.ObjectProducer<T> now implements Iterable<T>, which lazily loads the
results when you iterate through them. As before, you can use asList if you
want to buffer all the results up before retrieving them.
Java bindings: implement most fields of DXJob.Describe.

Fields common to jobs and analyses now appear in DXExecution.Describe.
Consequently DXAnalysis.Describe also inherits all describe
functionality common to jobs and analyses.