(portage-#20) Expand portage validation

This adds independent validation checks for package names and versions.
The version format has been modified slightly to join the comparison and
version string together.
Use ArgumentError over Puppet::Error for validation
(portage-#20) Extract version property in types

This splits up the package name and version field, so that versions can
be handled in a more intelligent manner.
Add in require for specs
(portage-#20) add portage parse_atom function

This adds a function for extracting portage atom components out of a
string. It also centralizes the portage regexes to class constants.
Allow the portage validation module to be included
(portage-#20) Parse out version/compare in package_keywords
(portage-#22) Allow numeric values in package category