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
The problem is that self.morlist is modified by other threads here. Iterating on this volatile container is a bad idea (I think it made the program crashed because we modify elsewhere self.morlist in-place), .keys() is thread safe and get you a snapshot of the keys at instant t. Otherwise use locks?