Update Ansible provisioner to only create a single inventory file

The Ansible provisioner will now only create a single inventory file named,
"vagrant_ansible_inventory". All defined Vagrant machines will be added to
this inventory file. Provisioning will now include a "--limit=#{machine}"
option to scope Ansible provisioning tasks to just the current machine. Setting
the Ansible provisioner's "limit" config option will override the new default
limit. Ansible provisioning scripts will now have access to all other defined
machines and what groups they reside in.
ansible generated inventory: deal with orphan VMs

env.active_machines can potentiall return 'invalid' machines:
- Ignore machines that are not declared in current Vagrantfile
- Warn when machines are missing (it usually occurs when the VM is
  removed without `vagrant destroy` and some orphan metadata remains
  in .vagrant/machines/...)
Ansible Groups: Accept single item as String

Syntax errors in `ansible.groups` definition are not well handled:
Error returned: undefined method `each' for "machine1":String (NoMethodError)

Being tolerant here doesn't hurt and may avoid people get
confused/annoyed.
ansible generated inventory: skip group variables

Except ':children' for groups of groups, it is safer to avoid generating
':suffix' blocks. At the moment Ansible only supports (but doesn't
recommend) group variables (:vars), and the Vagrant Ansible provisioner
won't support this way to define variables.
provisioners/ansible: Document new default limit

- explain new default ansible.limit
- shift `ansible.groups` part to Inventory section
- change/add inventory examples
guests/openbsd: OpenBSD is not a Linux derivative
guests/openbsd: Add back `insert_public_key` cap

Copied from linux guest.
provisioners/docker: config to disablize -d flag
provisioners/docker: always pull images [GH-2901]
kernel/v2: test for some config
kernel/v2: more tests
kernel/v2: support overriding provisioner settings
kernel/v2: support merging properly
website/docs: document it
kernel/v2: support the preserve_order option (documented)
Fix typo in sentence
provisioners/docker: configuration is mergeable
provisioners/puppet: mergeable config
kernel/v2: finalize the provisioner configs
Merge pull request #2929 from mitchellh/f-provisioner-id

Provisioner Inheritance/Overriding

This allows provisioners to be overridden by sub-scopes (machine configs, provider overrides), allowing common provisioning to be put into the global scope and selectively overriding certain configurations. This allows for getting rid of a lot of duplication without having to know a lot of Ruby.

Completely documenting in the pull request (in website/docs commits), so read there.