Handle 'dot' in ACL from ls when SELinux is enabled

'ls' uses the last character to indicate if an alternate access
method applies to a file in the permission string.

'.' indicates SELinux is used as an access method.  TestFileHelper
did not account for this case.

'+' indicates any other alternate access method is used. This was
already checked.
GRADLE-2938: If a dependency or dependency management element does not declare an implicit type attribute, assign the default value "jar". This will ensure that version matching works properly if one of these elements set the type "jar" and the other one doesn't.
Only override set methods for 1-arg methods.

AsmBackedClassGenerator currently "overrides" the set method for any method
with the same name as the property, regardless of how many arguments it has.
The set method is intended to be an alias for the setter without starting with
"set" (e.g. instead of setProp(String), it would be prop(String)).

By accepting any method with the property's name, it is generating more set
methods than intended. If there is a prop(String, String) and a prop(String,
String, String) it will generate two prop(String) methods, resulting in a
ClassFormatError (as noted in GRADLE-2695).

This commit changes the overrideSetMethod() method to only perform the
override if the passed metaMethod is a one arg method.
Asm class generator should add set methods if there are only multi-arg.

Previous commit changed AsmBackedClassGenerator to only accept 1-arg methods
to be overridden. While this fixed the ClassFormatError, it also prevented
the generator from adding new 1-arg set methods, if there are only multi-arg
ones.

This commit updates the logic in AbstractClassGenerator to only attempt to
override if it is a 1-arg method. If not methods were overridden it will
add a new 1-arg method.
Fixed the class name for the tooling model mentioned in the release notes.
allow adding/removing task with similar name multiple times.
Implemented shouldRunAfter ordering
Added docs for shouldRunAfter ordering
Make taking execution plan snapshots cheaper  when determining task execution order.
Make serialization of errors thrown by tests robust to failures in readObject/writeObject
add withoutDuplicates to CollectionUtils
Add support for dynamically looking up possible option values
- add optionValues annotation to mark methods providing default values
- add optionValues to InitBuild task to list possible project layouts
split static and instance related commandlineoptiondescriptor information. cache static part as it it the same for each task instance of same type
Honour @RequiresInstalledToolChain in SingleToolChainTestRunner
Some spec updates
Added some notes
Added some more stories to play spec, added some milestones (or really just a milestone 1 and everything else).
rename commandlineoption annotation to option annotation; to be used for more general purposes than just passing commandline options in the future
Add support for option annotation on fields

- support annotating fields
- defaults to field name when options not set
- move option related methods into seperate package
- cache static information about parsed classes in OptionReader
- TODO move assertion on valid method type into MethodOptionElement
- TODO add assertion on valid option field type into FieldOptionElement
- TODO throw decent exception when option.description not set. currently it's optional
- TODO throw decent exception when option.options not set when annotated on methods
- MAYBE: calculate option name on methods (e.g. setName -> option name name)
Make @option.description mandatory

- introduce OptionValidationException and use that instead of CommandLineException in OptionReader
- throw decent error message when description not set
- move OptionReaderTest to correct package