Decodes `foo-bar` into a field named `foo_bar`

This logic is specific to the Decoder, and because Rust does not support
hyphenated names as identifiers, it's the only reasonable thing to do
with hyphenated names in Toml.
Add a test for _ => - translation