Major EtherNet/IP CIP client API improvements
Further fixes and documentation of cpppo.enip.server.client API
o Implement full pipelining (not yet complete)
o Reimplement cpppo.enip.server.client in terms of new API
o Make cpppo.enip.server.io a very simple demo of API
Completed implementation of pipelining EtherNet/IP CIP Client API
o Simple example code in cpppo/server/enip/io.py
o Fixed missing buffer fill code on Client EtherNet/IP frame parsing
o Estimate request AND repy sizes in Multiple Packet Service code
o Use "lazy" zip in both Python2/3 for harvesting responses
o Make pipelining code simpler, use an iterable drainable deque
  to avoid storing all harvested pipelined responses
o Fix Read Tag [Fragmented] reply parsing to always include a
  'read_tag/frag' attribute in the decoded response, even if
  only carrying a failure status code.
o Fix validate code to only try to compute Fragmented offsets
  when the information is available.
Merge branch 'feature-client-upgrades'; Version 3.0.0