Load optional roles from ./Roles.yaml, if present

This patch provides an unversioned & easy-to-edit configuration file that users
can edit to learn about optional roles and enable or disable them. This is
accomplished using a simple Python script that is configured to run as Puppet's
External Node Classifier, or ENC. ENCs are a mechanism for delegating node
configuration to an external executable. The excutable receives the node name
from Puppet and is expected to return a YAML file containing a list of classes
that Puppet should apply. The ENC script included with this change is
exceedingly simple: it outputs ./Roles.yaml if it is present, or an empty class
list if it is not.

The classes specified by the classifier are added to the classes that the
node's entry in site.pp specifies. In our case, these classes are the base
roles for MediaWiki-Vagrant: role::generic & role::mediawiki. The toggling of
roles is henceforth relegated to Roles.yaml rather than site.pp. (Though there
may be a separate need for an optional, unversioned Puppet manifest, for users
that want to customize things beyond what Roles.yaml offers.)

A separate Python script, enumerate-roles, is executed by Puppet during its
initial run. Its job is to generate a starter Roles.yaml for the user. Its
output contains the set of available optional roles, all of which are commented
out. This is done for user convenience and to facilitate role discovery.

Change-Id: Ia8da3da63c07437e188304cfcd51e87cfa472580
Disable Puppet-lint's 'class_parameter_defaults' warning

The style guide justifies the guideline on grounds of compatibility with Puppet
2.6.x version. We don't target anything before 2.7, so meh.

Change-Id: I45ad66a1598a36133122c9ffd29b761ef1a7b8a7