Use toString() to match enum constants
Use toString() to match enum constants

Picocli sometimes uses `toString()` to get the name of an enum constant, at
other times `name()`. These can be different if one overrides `toString()`
in the `enum` type declaration, and in that case it is probably because one
_wants_ the external name of the enum constant to be different from its
source-code name. So that is what options should work in terms of.

The `${COMPLETION-CANDITATES}` usage-help interpolation for enum-type
arguments already uses `toString()` to display the options.

This PR fixes the default type converter such that it works in terms of
`toString()` rather than `name()`. It initially will try to match the
argument against the raw name using `Enum.valueOf()` because that might
use more efficient lookup tables internally (and arguably if someone
creates an enum constant whose `toString()` returns the source-level
name of a _different_ constant in the same enum, they're setting
themselves up for failure anyway).

remkop/picocli,remkop/picocli,remkop/picocli,remkop/picocli