Introduce the notion of 'roles'

This change refactors the Puppet code around the notion of 'roles' (a common
Puppet pattern, also in use in operations/puppet). Roles are meant to
facilitate the use of Mediawiki-Vagrant for sharing development environments
amongst developers of some particular component or extension.

Role classes are one level more abstract than module classes. They parametrize
the provisioning of several related software components that together enable
the machine to fulfill some particular function. Role classes do not take
parameters themselves, but rather exist as a place for aggregating all
parameters required for provisioning a virtual machine of a certain kind.

Roles are enabled by including them in the node definition in site.pp.
Declaring a role is not tantamount to enabling it -- it merely makes it
available. Thus additional roles could be incorporated into this repository
while keeping the basic setup quite generic and lightweight.

My hope is that it would be rather straightforward for individual teams that
use Vagrant internally to declare their development setup as role. Arthur
Richards from the mobile team told me some moons ago that many of the bugs they
ended up deploying were undetected by dint of differences in the development
environment of various mobile developers. I think Vagrant + Puppet roles
provide a possible solution.

As part of this change, I moved various high-level configuration options from
class parameter defaults to roles, to facilitate centralized management of key
configuration options.

Change-Id: I88ca30607c0ff91f4fcafa49a01765eb1013bb31