Create JUnit Rule for verifying log entries

- Create a LogVerifier (to be used with JUnit's @Rule) that provides a
  MavenLogger instance and performs assertions on the errors/warnings
  written to that logger.
- Used the verifier in most tests. Dropped (one of the) other logger
  stub implementations.

Change-Id: I8a89a10e123a279fa187070172281b78046fd127
400956 allow distinct source roots for nested jars

Introduce new boolean mojo parameter "distinctSourceRoots"
(default: false).
If true, sources for nested jars will go into distinct
folders inside the source jar created.
E.g. for nested jar foo.jar, sources go into folder foosrc/.

Bug: 400956
Change-Id: Ie4616ce21d4e696c351f40a142fb2a74bdc41afc
400956 Fix IT failing on linux

Bug: 400956
Change-Id: I8ef82b4726a46ee4f7efbd93eac8775bfa8f2aa7
380120 Allow multiple targets in target-platform-configuration

- The target platform configuration may now contain multiple <artifact>
  entries pointing to multiple target files. This can for example be
  used to add a target file with test artifacts in addition to the
  the target file with the productive dependencies.

Bug: 380120
Change-Id: I264b8526912181c8f249b03455454e2f90ab932d
380120 Add test for how multiple target files are resolved

- The new multi-target file support (intentionally) resolves each target
  file independently, e.g. to be able to add conflicting bundles with
  planner target files, or to have a planner and a slicer target file.
  This behaviour is verified through a unit test.

Bug: 380120
Change-Id: Ic8d295efb6321cee526810a528979f0862700fae
397355 Started testing p2 API of LocalArtifactRepository

- Added a local Maven repository as test data. The repository uses
  the same binary artifacts as the already checked-in repositories
  "e342" and "packgz". Exception: the formerly empty pack200 artifact
  has been replaced by a real pack200 file (in all occurrences).
  Added a TestRepositoryContent class that describes the re-used
  artifacts.
- Started testing the p2 API methods of LocalArtifactRepository.
  Fixed an issue with the contains(IArtifactKey) method: a key was
  still "contained" even after removing the last artifact descriptor.
- Tests for artifact read and write access still pending.

Bug: 397355
Bug: 393004
Change-Id: I17fc7afbda281746e735a34f3cf1854cfab6dbd8
397355 Test getArtifactFile method of LocalArtifactRepository

- Continued testing the p2 API methods: Tested the two
  getArtifactFile methods. Fixed return value (changed to null) if
  artifact format is not contained in the repository.

Bug: 397355
Bug: 393004
Change-Id: If6e13d13ea92e459361542c2722197ebdb59e800
[refactoring] Use JUnit Rule instead of base class in test

- Create temporary object instances needed around testing a
  LocalArtifactRepository in a JUnit Rule (instead of a base
  class).
- Only deprecated the BaseMavenRepositoryTest class; some users
  are not yet adapted.

Change-Id: Ib4576cfd30324d394f08b138769719bad811075b
393004 Fix getArtifact method of LocalArtifactRepository

- Fix the getArtifact method to always return the artifact in canonical
  format. This means that artifacts stored in pack200 format are now
  correctly unpacked. Note that this unpack processing only occurs if
  the artifact is not also stored in canonical format because the
  repository's LocalArtifactTransferPolicy prefers the canonical format.
- With this implemented correctly, there is no more need to transfer
  the canonical artifact from a remote repository if the pack200
  artifact is anyway transferred. (See later commit adding the
  MirroringArtifactProvider.)
- Also: Tested getRawArtifact method and stream closing behaviour.

Bug: 393004
Bug: 397355
Change-Id: Ife17ea1c129fc0f5a97f0483599509ca839f9109
397355 Don't add bad artifacts to LocalArtifactRepository index

- Don't add artifacts to the index if the source detected problems in
  the written data (e.g. a bad MD5). Only change the index after the
  artifact has been completely written and checked. This means that we
  can be sure that the index always only contains good artifacts - an
  important prerequisite for multithreaded access to the
  LocalMavenRepository instance.
- Note that Tycho is still not process safe because some callers (e.g.
  the MavenMirrorRequest) don't use the (complicated) p2 artifact
  repository API correctly yet (cf. p2 bug 400442). This change is not
  included because the caller side will be reworked anyway for bug
  393004.

Bug: 397355
Bug: 393004
Change-Id: I3f76571121168f4a348dba704c2c3d18a41c90be
400983 use eclipse-target-definition packaging type

available since tycho 0.16.0 so we can use it now
for building tycho itself.

Bug: 400983
Change-Id: Ie870fb29749e5f783f9b5ab66dbd5c6ef24735b5
use fluido skin for site docs

Change-Id: Ifb9338f8df2111eef18863e5a006ee5901fa5cbb
[refactoring] Opened up eclipse-repository integration test

- ... so that additional, basic test cases can be added to it.
- Also: Moved TransitiveP2RepoTest to package only one below o.e.t.test 
  to shorten list of packages in tycho-its
397996 don't use getCanonical*

- Remove all getCanonicalFile and getCanonicalPath calls.
  We don't control all data flow paths to certain objects (e.g.
  the Maven model), so calling these methods leads to a mixture
  of canonical and non-canonical paths. Therefore, the solution
  is to never canonicalize paths. Really, this is also what we
  want: we want to operate on the logical file structure, and
  don't want to care about how files are mapped/symlinked to
  physical files.
- Used getAbsolute* as replacement of getCanonical*, except where
  it can be expected that the path contains ".." segments (e.g.
  from concatination of a base dir with a build.properties value).
  In the latter cases, the ".." segments are removed using
  URI.normalize.
- Verified this change by running the full Tycho build and
  integration tests in a symlinked directory.