Add Vagrant sub-commands for role management

This patch adds four new sub-commands to Vagrant for enabling,
disabling, and enumerating roles. They are:

 $ vagrant list-roles     -- list available & enabled roles.
 $ vagrant enable-role    -- enables a role.
 $ vagrant disable-role   -- disables a role.
 $ vagrant reset-roles    -- disable all roles.

Roles are managed using puppet/manifests/manifests.d/vagrant-managed.pp,
which is automatically generated (and re-generated) in response to the
sub-commands listed above.

I think that this approach is generally superior to using a YAML
manifest in conjunction with a node classifier, because it avoids
introducing another file format and configuration management subsystem
to the stack. The sub-commands for role management simply update a
Puppet file in manifests.d, which means that custom manifests in
manifests.d/ is the one canonical way of customizing the VM, and it is
up to the user to do so using the vagrant sub-commands or by manually
manipulating files in that directory.

Bug: 51271
Change-Id: I5598f93ac703976b9780f7575307a057a872aa51