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?