Allow more keywords and improve error messages

The error message now mentions 'keyword' instead of 'crate name' and the first
letter is allowed to be alphanumeric, not just alphabetic.

Closes rust-lang/cargo#905
Closes rust-lang/cargo#928