When JUnit tests have assumption failures, treat them as "skipped"

JUnit has a conception of "assumptions", when encode conditions in which a test is meaningful.
When an assumption fails, it means that the test provides no useful information, and should
"halt and be ignored".  Prior to this change, Gradle was treating JUnit tests with assumption
failures as "passed".

http://junit.sourceforge.net/javadoc/org/junit/Assume.html
Extend the application plugin to build a tar distribution

Add distTar task to application plugin
Add documentation and integration test coverage for distTar

Add integration tests to ApplicationIntegrationTest
Add distTar to Application Plugin Documentation
Add unit test coverage for JUnit assumption handling
minor formatting cleanup; add credits to sean for the distTar contribution to the release notes.
remove author doc block
Remove some redundant code.
Rename TestFileContext to TestWorkDirProvider, and don't make TestFile implement it.
Update to build with the latest nightly.
Add integration test coverage for JUnit assumption handling
Added more stories to configure-on-demand spec.
First cut of "Software Component" support:
- SoftwareComponent represents something that is built by a project
- Project has a container of SoftwareComponent instances
- Java plugin adds a JavaLibrary component to the set of software components
- SoftwareComponents are not currently used anywhere
Updated 'maven-publish' plugin so it publishes SoftwareComponents
- Published artifacts are simply artifacts declared by component
    - Artifacts from the 'archives' configuration are _not_ published automatically
- Runtime dependencies are as declared by component
    - Published pom now includes all runtime dependencies in 'runtime' scope
Extends pom customisation test to tweak all project-coordinate values
Checkstyle and unit-test fixes
Updated publication DSL spec.
Moved finished stories out of the spec.
go back to 1.3 for building until XmlWriter issue is fixed.
drop invalid XML character in XML writer.
Remove GradleDistribution.getTemporaryFolder().

Makes no sense that the distribution provides the working space.

More work to come…