Move reading of cf-consumer.pid to def.cf and guard it by enterprise and hub classes.

Redmine: 6303

This is necessary because class guards do not protect function evaluation when calling methods.

eg.

bundle1
  methods:
  class1::
   usebundle => bundle2;

bundle2
  methods:
  # class1 needs to be used here as well
  # Otherwise cf-promises will try to read the file
  # In our case, this file doesn't exist in client nodes
  class1::
    "data" string => readfile(...);

(cherry picked from commit 75e1f679362134175fc31841383a6eafef322bf7)
Skip package tests on Redhat 4.

RPM on Redhat 4 has a bug which corrupts the RPM database when we do
our tests. The cause is unknown, but it is suspected to have something
to do with the fact that we switch out the official repository with a
custom one. Either way, it renders package promises untestable on that
platform.

(cherry picked from commit 24065055bb3c61865bd23c6127cc2c5438fc1029)
Change: Specify 'Unsupported' for dmidecode strings on rhel4

Ref: https://dev.cfengine.com/issues/630

Old versions of dmidecode do not provide a good way of extracting
strings.

(cherry picked from commit 82db32b6b3039b39ec3f2a0832e4555f2544ff5c)