Fixed hot loop in asyncore connection.
Problem was that we were unconditionally registering as writable, causing the select call in asyncore to never ever block.
Fixed by overriding writable dispatcher subclass.
Also added timeout to select call so that the loop is responsive to user input. In Unix more elegant solutions are available, but in Windows where select() is provided by Winsock we have to resort to this. Note Twisted does the same thing!
Modified to allow one ManagedDeviceServer to handle devices of more than one model.
This is done by making the deviceWrapper object a dict mapping device names to wrappers, and selecting the appropriate wrapper based on *IDN response
Example GPIB device server. In particular, illustrates how to hook assign different device wrappers to devices based on their *IDN response
Added backward compatibility logic for servers that specify devices by name or list of names and separately specify a single deviceWrapper. Also added detailed documentation on how to use deviceWrappers functionality.
Allow Value, Unit and Complex to be deep copied. Since these are immutable we just return the object itself.
Merge pull request #2 from martinisgroup/master

asyncore backend hot loop + improved gpib device model support