Java: DXSearch.findExecutions generalizes and replaces findJobs.

* DXSearch.findExecutions supports queries on the following new fields:
  class, includeSubjobs, name, executable, tags, properties,
  rootExecution, originJob, parentJob, parentAnalysis.

* Compatibility note: 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. If you
  did, change instances of FindJobsRequestBuilder to
  FindExecutionsRequestBuilder<DXJob> and FindExecutionsResult<DXJob>
  respectively.

* TODO: findExecutions supports withState

* DXExecution provides factory methods getInstance and
  getInstanceWithEnvironment that return a DXJob or DXAnalysis as
  appropriate.

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

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

* TODO: DXJob supports cached describe info.

* DXDataObject.Builder.addTags and addTypes accept any
  Collection<String> instead of just a List and may now be called more
  than once.

* DXJob.Describe supports getProperties and getTags for retrieving job
  metadata.

* TODO: same for DXAnalysis

* ExecutableRunner 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: inFolder -> setFolder,
  inProject -> setProject, withDetails -> setDetails, withInput ->
  setInput, withName -> setName, withRawInput -> setRawInput. Delegate
  methods are left for compatibility.