(REVIEW) PUP-2163 Smite yumrepo and inifile with the mighty sword of refactoring

This PR addresses the following issues:

  * PUP-2150 yumrepo removable parameters cannot be set to 'absent' in Puppet 3.5.0.
  * PUP-2162 yumrepo gpgkey and baseurl with multiple URLs broken in 3.5.0
  * PUP-2178 yumrepo 'descr' property doesn't map to the 'name' INI property
  * PUP-2179 Ensuring absent on a yumrepo removes all repos in the same file
  * PUP-2181 Yumrepo string properties cannot be set as absent in Puppet 3.5.0.

I'm still working on commit messages and adding inline documentation, so I'm submitting this for initial review while I work on the nonfunctional changes.