Parse user-agent strings into components