Properly log iOS versions and devices.

Both are kept sorted using semver. Per-device version regressions are
logged (if the UUID has previously reported a higher version than it is
now using). This also stops _eexistNoop from crashing by ignoring null
errors.
Add script to send a test request to the local server.