First shot at implementing a vSphere check

cc @remh
- [x] Get metrics for all the VMs and hosts
- [x] Selection flag for all_metrics or a set of "basic_metrics"
- [ ] Get metrics from datastore
- [ ] Metrics tagged with vm/host/cluster/datacenter tags and instance tags (~device)
- [x] Get events from vCenter
- [x] Filter these events, get only the types that are interesting + ignore certain messages with regexes
- [x] Tag VM events with VM tags
- [ ] Tag other events with proper tagging?
- [ ] Go through the list of events and select what we want https://github.com/vmware/pyvmomi/tree/master/docs/vim/event
- [x] Report host tags through another param in the payload we send to the intake
- [x] Multithread the requests asynchronously with the ThreadPool class
- [x] Display the async job failures in the logs

Before release:
- [ ] Remove the TEST-INSTRUMENTATION code for release
- [ ] Remove unuseful debugging strings for release
why not just do:
```python
try:
    extra_host_tags.extend(check.get_extra_host_tags())
except AttributeError:
    pass
``` 
? 

Or even better, get rid of the try/except and a new interface for that in the AgentCheck class ?