Clean up package classes, allow installing mainline upstream packages

Improves the way packages are handled by the module and cleans up the code significantly. No features are removed except with good reason, and it should be almost completely compatible with existing code (except for the `package` resource now always being called "nginx", and removing a couple of resources that were only for internal use).

* Cleanup
  * Removed a bunch of redundant code in manifests and specs
* New features & fixes
  * No longer install an upstream Nginx package on Amazon Linux. Upstream doesn't provide a build for Amazon Linux.
  * The package resource is now always titled "nginx" even when package name to install is something else.
  * Instead of failing compilation, install the "nginx" package by default when the OS isn't recognized. This will provide broader OS compatibility without having to add specific OS support.
  * Removed a warning for Fedora 18 and below. Those versions no longer supported by the Fedora Project.
  * Differentiate between upstream's RedHat and CentOS packages. Even if they're currently identical they may diverge in future.
  * Only set `manage_repo => true` when appropriate (i.e. upstream provides a package for it)
  * Fail on Solaris when `$package_name` not set. The comments say this must be set on that OS so the failure makes that explicit.
  * Don't ensure existence of the yum repo file. This could be in one of several places and it's not up to the module to check for it - assume Puppet's `yumrepo` resource will do the right thing.
  * Update the puppetlabs-apt integration to use more of that module's features rather than rolling our own support for forcing updates after adding an `apt::source`.
  * Add support for installing mainline packages (closes #518, closes #456, closes #450)
  * Install "ca-certificates" package before adding the Passenger `apt::source`. This is required according to the Passenger documentation.
  * Warn when user doesn't set package name correctly when using Passenger.
Whoops, missed this during a rebase - I need to change this to `package { 'nginx':`

I'll fix tonight, so don't merge just yet.