Invalidate object files and binaries when the tool chain or target platform changes.

Added ToolChainInternal.getOutputType() which returns a unique id for the output it will produce. This id encodes whatever platform specific and tool chain specific details are relevant to the tool chain implementation.
Fixed javadocs.
Removed unused exclude.
Added `Ear` task to user guide section on dealing with archives.
Some spec updates.