Add `compare:`
Add `semverWithString:` and use instancetype