Updated ua-parser to latest.
Lockfile update for last author release (looks like?).
Let versions be strings.

All the coercion makes for quite a bit of pain (across rubies) and I would assume slowness as well, though I haven't benched anything yet.

I think this seems completely ok. If someone really wants to have an integer, they can always do `version.major.to_i`.

The other option, if we really must have versions that are sometimes integers and sometimes strings, is we could map families to version coercions.
Added 1.8.7 and ree to travis.
Move segments regex to constant.
Note that 1.8.7 is now supported.
Allow initializing parser with patterns path.

No reason to lock all parsers down to a single patterns path file. This defaults to the global file, but allows each parser instance to have its own as well.
Clean up operating system.

Consistent spacing. Full variable names rather than single letter
variables. Remove writer methods as there should be no need to change
version or name once created. Also ensured that eql? works like ==.
Cleaned up user agent in same fashion as operating system.
Clean up version a bit.
Use parenthesis consistently.

Half had parens and half didn't.
Pass os to no match user agent scenario.
Use #each instead of for.
Space out the parser specs
Replace single character variable name.
Space out parser.
Initialize patterns during parser initialization.

Saves having to check it each time.
Swap == and eql?.
Check class equality as well first.
Added rake task to spit out unique Browser and OS families.