Pass line hash instead of params

Changes:

* Changes from name, params, value params to using a hash
* Also tidies up tests a bit with a helper method for parsing a line with
a builder.

Notes:

I'm always hesitant to make changes like this which extract duplicate code into a test helper, but the internals of the helper method are not really relevant to the test. All that the user needs to know is that the helper sends the line parameters appropriately to the builder, and then it can test to make sure things got set right on the other end.
Refactored line hash into struct

Instead of passing around a line such as { :name => 'VERSION', :params
=> {}, :value => '2.0' }, I created a struct object that can be
instantiated with three parameters: name, params, and value. It can be
accessed like an object, e.g. line.name, or like a hash, e.g.
line[:name].

This ended up being a more natural place for a lot of the regex work
that Parser was doing. I need more tests for the Line class now, but I
moved the relevant tests over from ParserTest.