(PUP-3009) Add error handling to PMT module downloads

Before this PMT would not check if the module download request
succeeded before trying install the module. This causes informative
errors from forge to be hidden by an error about the checksum of the
download not matching. After this PMT will only move forward with module
installation if a 200 is received from forge otherwise it will display
the error returned by forge.
(PUP-2950) Fix: ensure that default layer is used when the user has not provided a layer

Without this patch,

```
      unless diagnostics.errors?
        @layering_config   = data['layers'] or default_layers
        @scheme_extensions = (data['extensions'] and
                  data['extensions']['scheme_handlers'] or
                  default_scheme_extensions)
      else
        @layering_config = []
        @scheme_extensions = {}
      end
```
This would have resulted in @layering_config not being assigned a value if no
layers was set. This is clearly not intented. This patch updates the behavior
so that `@layering_config` is assigned default_layers instead
(by changing `or` to `||`)

This commit also adds test cases to verify that this case is caught. Adding the
test case also highlighted that the constant CONFIG_CATEGORIES_MISSING was
undefined, causing the test to fail. This commit also defines
CONFIG_CATEGORIES_MISSING
(PUP-2950) enabling rubocop Style/AndOr cop in pops directory

This commits enables `AndOr` cop only in lib/puppet/pops directory. This cop
bans the use of `and` and `or` keywords in favor of `&&` and `||`. We have
chosen this directory as a test case to evaluate the utility of enabling
`AndOr` on the complete codebase. We inherit from the base rubocop file, so all
the other cops remain enabled. At a future date, when `AndOr` is enabled
systemwide, this file may be removed (if no other specialization exists on pops
directory).

It changes all code that uses `and` and `or` keywords to use `&&` and
`||`  instead. Note that this commit only fixes the lib/puppet/pops directory.
Merge pull request #2892 from vrthra/rubocop/puppet-4/andor-fix

(PUP-2950) rubocop - Style/AndOR enabled for pops
Merge pull request #2941 from adreyer/PUP-3009

(PUP-3009) Add error handling to PMT module downloads
Revert "(maint) Use public API when testing binary file #save"

This reverts commit 133c0b8009a48eef77d68c0bd8d5f79c930dab50.
Revert "Merge branch 'pull-2938'"

This reverts commit 1a428b92c900e84d9faa5d0aaa1a32f3c0b1d42b, reversing
changes made to cb26e23706b76e44544c14f4c921885f17dccbb3.
Merge branch 'revert/master/pup-2946-windows-specs'

We're getting spec failures on Windows running Ruby 2.0, we have to
revert this and try again so the build doesn't stay red.
Merge branch 'master' into puppet-4