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
provisioners/ansible: Fix Group Management

- Support arbitrary depth of "groups of groups of ... groups"
- Skip ':vars' suffix, but allow group names with ':' (yes, Ansible
  accepts this character)
- Like for groups of machines, groups of groups can result "empty", but
  it is not an issue for Ansible. Recursive filter on the group tree is
  a bit hard to implement, and don't brind real added value at Vagrant
  level.
provisioners/ansible: Change --limit behaviours

- The implicit default limit is always set
- ansible.limit as an empty string won't disable the default limit, but
  will be passed as "--limit=" argument and ansible-playbook will return
  an error (provided host list is empty)
Ansible: Try to document the limit breaking change
Ansible Docs: Tip about Parallel Multi-Machine
provisioners/ansible: improve `inventory_path` doc

Related to discussion held in #3004.
ansible: generate inventory in .vagrant/...
website/docs: Update Ansible URLs
Ansible Docs: Tip to ship a local `ansible.cfg`

Hint motivated by misleading situations reported in #2302.
Ansible Docs: Tip about wrong remote user

Hint motivated by misleading situations reported in #2710.
synced_folders/nfs: unavailable on Windows
providers/hyperv: initial commit

Initial work done by MS Open Tech
providers/hyper-v: cleanup
providers/hyperv: shuffle things around
providers/hyperv: better errors
providers/hyperv: clean up driver error handling quite a bit