Cleanly handle packages with no version string
(portage-#20) refactor all parsing into portagefile

The different classes had far too much duplication; all the parsing and
file manipulation has been centralized into the PortageFile class