Improved classes RawData and String in module ejtp.util.py2and3
Replaced string constants with actual constants in module router

Router.runstate was either "stopped" or "threaded". To avoid problems with string handling there now are the constants STOPPED (=0) and THREADED (=1) in module router
Replaced all relative imports with absolute ones
Classes RawData and String from module ejtp.util.py2and3 now correctly support unicode

RawData and String now use methods encode and decode instead of unichr(ord(char)).
Thus multi-byte unicode characters are now supported.
Changed __getitem__ of RawData and String to return instances of themselves
Added export methods to RawData and String

You need this methods to call methods like json.loads because they only accept builtin strings. export() is not considered for using it anywhere apart from this!
Added decorators for RawData and String

Also added __int__ for RawData to convert it to int if it contains only one byte
Changed call of decorators to kwargs instead of bitmask constants
Implemented RawData and String in a chunk of files

That's still not all files that need the implementation but at least it's something.
I also changed client.py to use the new Frame constants
Implemented RawData in ejforward and client
Removed unused functions

Because there now is RawData and String we no longer need functions that convert to unicode or do similar things.
Added join and index to String and join to RawData
Added __hash__ methods for RawData nd String

If you use RawData or String for something that uses hashing, like keys in dicts, the hash should return the same value for the same Strings in different instances.
Modified constructors of RawData and String to accept instances of the class itself

Also added some more tests.
Fixed error when trying to call RawData with an unicode object

It was just a trivial error but it took ages to find it...
String(val) now raises TypeError if val is RawData and can't be converted
Added split and __contains__ methods to RawData
Fixed all errors that showed up in doctests with python2
Fixed all errors that showed up in doctests with python3

I didn't look at interactive.py since it isn't really maintained right now.
#43 Merge branch started