(PUP-2882) Detect when module is not on forge

Prior to this commit it was unclear when upgrading a module not found on the forge
wether there was no available upgrades on the forge or the module was simply not
on the forge.
This commit adds a check before even attempting graph/dependency resolution to
see if the module exists on the forge and quits if it is not.
(maint) Never load facts when testing static compiler
(PUP-2950) rubocop - Style/AndOr pops:rubocop.yml

This commits enables `AndOr` cop only in lib/puppet/pops directory. 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).
(PUP-2950) rubocop - Style/AndOr bug in precedence

The original code is

```
      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
```
See that the first assignment becomes a no-op if `data['layers']` is `nil`
This is clearly not intented. The correction we have done here is to replace
the `or` with `||`

This commit also adds test cases to verify that this case is caught.
(PUP-2950) rubocop - Style/AndOr conversion of keywords to ops (only on pops)

This commit changes all code that uses `and` and `or` keywords to use `&&` and
`||`  instead. Note that this commit only fixes the lib/puppet/pops directory.
Further, for ease of verification of correctness, redundant parenthesis has
been used around the expressions thus converted where there was felt to be
a possibility of confusion.