(Maint) Re-align requires of pops code

The Pops code had gotten itself into loops and ended up with a lot of
dependencies on what order tests are loaded. This was caused by
everything trying to require just the small part of the pops code that
it felt it wanted. This idea violates Re-use/Release Equivalency
Principle
(http://stackoverflow.com/questions/63142/the-reuse-release-equivalence-principle-rep)
and caused odd test failures.

This reorganizes the requires of the pops code such that anything using
the pops code should only every require 1 or 2 different files:
puppet/pops/api and puppet/pops/impl. These two files then will pull in
all of the components of their portion of pops in the order needed and
will also ensure that the module structures are in place for each
component.
(Maint) Allow Pops::Impl classes to assume module

Now that the parts of a component are all required at the point the
namespace modules are created, they can assume that the module structure
exists. This simplifies the declaration for the Impl classes.
(Maint) Allow Pops::API classes to assume module

Now that the parts of a component are all required at the point the
namespace modules are created, they can assume that the module
structure exists. This simplifies the declaration for the API
classes.
(Maint) Remove aliases for Pops::API classes

The aliasing was an interesting idea, but just leads to having to look
for multiple different names and confusion about what the correct way of
referring to something is.