[fix] Also allow the devices to be set, once. Useful for parsing back.
[minor] Re-added the `useragent#fromJSON` API