Fix perfmon collection with cycletime > 600.

If a "Windows Perfmon" count was configured for a cycletime longer than
600 seconds, it would fail to be collected.
Fix collection failure on empty results stdout.

It appears that there are occasions when the onReceive callback gets
called with no stdout data. The only way I've been able to reproduce
this is to forcibly kill the Get-Counter command on the Windows server.
When I did that it caused a traceback into the bowls of Twisted that
would prevent further perfmon collection on the device.
Fix leaking of WSMan operations in perfmon.

Under some circumstances the Perfmon datasource would start a new
Get-Counter command before properly terminating the last command. This
would result in the WS-Management active operations leaking, consuming
resources unnecessarily on the Windows servers and potentially
preventing further monitoring if they hit the limit. This fix causes the
existing operation to be cleaned up before starting a new operation.
Move missing counters into event details.

Moved from evt.message into evt.missing_counters.
Collect perfmon data 1 cycle earlier.

When we ask for data, we know that we won't get the data back until now
+ cycletime. This introduces a race condition on the next collection
interval where the data won't yet be available for a fraction of a
second. This means we have to wait another collection interval before
the data will be available. Doing an asynchronous sleep for 1 second
here mitigates the race condition and greatly increases the chances that
we'll get data a full collection interval earlier.
Fix leaking operations in shell datasource.

The "Windows Shell" datasource was attempting to reuse the same shell to
run many commands. The biggest problem was that it wasn't done very well
and it was leaving a lot of "active operations" on the Windows server
that were eating up resources and eventually causing Zenoss to be denied
WS-Management access. The other problem is that commands couldn't be run
in parallel.

This change stops trying to share a shell between commands and
simplifies the datasource considerably. It also properly cleans up after
itself on the Windows server.
Change winrs success events from info to clear.

The "winrs: successful collection" events sitting in the event console
when everything was working as expected were annoying. They should have
been clears from the beginning.
Merge pull request #121 from zenoss/feature/optimizations

Please review branch feature/optimizations
Model interface speed as integer.

Fixes ZEN-9608 and #119.
Merge pull request #123 from zenoss/feature/ZEN-9608

Please review branch feature/ZEN-9608
Handle null processor.SocketDesignation.

Fixes ZEN-10360 and #120.
Handle null Win32_Product.InstallDate.

Fixes ZEN-10361 and #122.
Merge pull request #125 from zenoss/feature/ZEN-10361

Please review branch feature/ZEN-10361
Merge pull request #124 from zenoss/feature/ZEN-10360

Please review branch feature/ZEN-10360
Fix "Windows Shell" datasource with Cacti parser.

Fixes ZEN-9592.
Merge pull request #126 from zenoss/feature/ZEN-9592

Please review branch feature/ZEN-9592
Add cmd.deviceConfig.name attribute for parsers.

zencommand makes this attribute available and some custom parsers in the
real world are using it. The "Windows Shell" datasource needs to provide
it to be compatible with zencommand.

Fixes ZEN-10365.
Merge pull request #127 from zenoss/feature/ZEN-10365

Please review branch feature/ZEN-10365
Merge fix