[VOL-2241] Python 3 refactor of pyvoltha

Majority of work was manual fixes to bytes and strings types, which are
different in py3, but same in py2. As the OMCI library does a lot of
these comparisons and scapy then renders packets, this was frequently
nontrival to debug.

Also:

- Removed grpc dep which wasn't being used, not py3 compatible
- s/Alarms/Events/ to work with protobuf changes per VOL-2224
- Automatic fixes via modernize tooling
- Removed unused OrderedWeakValueDict code
- Removed frameio send_frame specific to Darwin (MacOS), which had no
  corresponding linux code
- Use library functions for hex and unicode conversions
- Various other cleanups and fixes (EOL whitespace, etc.)

Also more (Matt):

 - handle stringify better, check if already string
 - use binary string for binary work
 - import new thread paths
 - update requirements.txt for newer libraries needed with newer python
 - return proper tuple for unpacking
 - bytes string formatting fixed
 - fix mock task unit test

Even more (Zack):

- Python 2/3 compat for _thread by using 'future'
- Bump version to 2.3.0

Change-Id: I53b596d374a944bfb80d0b112f21bcc1f8bcee6e
diff --git a/requirements.txt b/requirements.txt
index 0dc586a..ab3dceb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,11 +4,11 @@
 cmd2==0.7.0
 colorama==0.3.9
 confluent-kafka==0.11.5
-cython==0.24.1
+cython==0.29.14
 decorator==4.1.2
 docker-py==1.10.6
 fluent-logger==0.6.0
-grpc==0.3.post19
+future==0.18.2
 grpcio==1.16.0
 grpcio-tools==1.16.0
 hash_ring==1.3.1
@@ -32,23 +32,23 @@
 pyOpenSSL==17.3.0
 PyYAML==3.12
 requests==2.18.4
-scapy==2.3.3
-service-identity==17.0.0
+scapy==2.4.3
+service-identity==18.1.0
 simplejson==3.12.0
 jsonschema==2.6.0
 six==1.12.0
-structlog==17.2.0
+structlog==19.2.0
 termcolor==1.1.0
 transitions==0.6.4
 treq==17.8.0
-Twisted==18.7.0
+Twisted==19.10.0
 txaioetcd==0.3.0
 urllib3==1.22
 pyang==1.7.3
-lxml==3.6.4
+lxml==4.4.1
 nosexcover==1.0.11
 zmq==0.0.0
-pyzmq==16.0.3
+pyzmq==18.1.1
 txZMQ==0.8.0
 ncclient==0.5.3
 xmltodict==0.11.0