Prior to this commit, Vagrant had no way internally to determine if a provisioner object was unique if the `name` property was not set. Because of this, when vagrant went to merge configs it would duplicate an existing unnamed provisioner since it had no way of determining if a user actually had added the same provisioner twice. This commit fixes that by introducing an id which will default to `name` if its set, but if not will be set by `SecureRandom.uuid`.
Vagrant Core Plugins
These are plugins that ship with Vagrant. Vagrant core uses its own plugin system to power a lot of the core pieces that ship with Vagrant. Each plugin will have its own README which explains its specific role.