Support for wildcard requirements (*, x.*, x.y.*)

This also includes some minor cleanup. In case there are any problems with this I'll open another PR for them.
 * move from `assert!` to `assert_eq!` where possible to have nicer error messages
 * remove unused `LexWin`
 * move from deprecated `push_char` to `push`
Yeah right

NPM uses it: https://www.npmjs.org/doc/misc/semver.html#x-ranges-1-2-x-1-x-1-2-
Composer, a lot: https://github.com/search?utf8=%E2%9C%93&q=require-dev+extension%3Ajson&type=Code&ref=searchresults