Normalize task option names: lower-case and strip dashes
Normalize task option names: lower-case and strip dashes

Note that underscores were already being converted to dashes. Stripping
dashes is primarily for the case where a trailing underscore is used to
avoid clashing with a built-in name or keyword.

Normalization could be problematic if a task has option names:

- that are the same except for casing
- that are the same except for trailing underscores
- that consist only of underscores

Some potential solutions:

- Ignore options that start with underscores
- Disallow options with the same (normalized) name (this is a bad idea
  anyway)
- Ignore **kwargs
- Ignore keyword-only args (i.e., after * in params)

wylee/runcommands,wylee/runcommands