Be more Python3 friendly and do not use reserved keywords
Reflect the Python3 support
Updates to support Python 2 & 3

- Update frame marshaling and encoding tests to support both Python 2 & 3, still need to do decoding and frame demarshaling
- Update codegen/specification/include to use Python3 evaluation for bytes vs str use
- Update Heartbeat to cast to bytes for Python3
- Update Header to cast to bytes for Python3
- Update frame to cast to bytes in marshal fro Python3
- Add new encode3.py module that is transparently loaded in as codec.encode for Python3
- Sort keys in property tables by key name instead of arbitrarily since an ordered dict is not used
- Do not try and decode to unicode if in Python3 codec.decode
- Have a PYTHON3 constant in the __init__.py