Identify browsers and OSes from user agent strings, in Erlang