Only mark parameters uncommunicative if used

UncommunicativeParameterName and UnusedParameter now collaborate as follows to
ensure correct parameters:

- If the parameter is unused, it will be flagged by UnusedParameter, unless it
  is explicitely marked as unused.

- If the parameter is used, UncommunicativeParameterName will ensure it has a
  communicative name. This includes not being marked as unused.

This means UncommunicativeParameterName only flags parameters that are actually
used, and its default reject set includes a new regexp that matches parameters
marked as unused.

The logic for checking whether a method uses a given parameter is moved to
MethodContext#uses_param?
Merge pull request #243 from troessner/issue-unused-underscore-parameter

Only mark parameters uncommunicative if used
Remove HashExtensions

- Improve and spec comment configurations: they now behave exactly like nested
  configuration files, merging configuration hashes per code smell
- Replace calls to Hash#adopt with Hash#merge
- Other extensions were no longer used
Merge pull request #244 from troessner/issue-remove-adopt

Remove HashExtensions
Added link to preek (as requested)
Merge pull request #245 from joenas/patch-1

Added link to preek (as requested)