fix: berry lockfile semver range parsing of valid floats (#4945)
### Description
I believe this is probably the culprit behind #4925.
`serde_yaml` parses `1` as an unsigned int, `1.2` as a float, and
`1.2.3` as a string. We were missing handling the float case.
### Testing Instructions
Added unit test of deserialization of semver ranges that's a valid float