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`
Isn't `1.*` equivalent to `~1` and `1.2.*` equivalent to `~1.2`? 

Out of curiosity, does this sort of version requirement syntax show up in other package managers? I do think that the version requirement syntax of `*` was planned, but I wasn't so sure about `1.*` and such.