Specify versions in Gemfile.

This seems contrary to how Gemfile is meant to be used, but since
jeweler does not pull dependency information from Gemfile.lock, it's
needed in order for the gem to have usable dependency versions.
Break parser into separate files