Python 3 compat; Improve WSGI, WS, threading and tests

This includes:
* patching more tests to pass
* removing few unit tests which I think are redundant
* repeating SSL socket reads in a loop to read all data (I suspect this
  is related to the fact that writelines is used in the server code
  there and Python 3 writelines calls write/send repeatedly while on
  Python 2 it calls it once; on one hand there's no guarantee that
  single recv/read will return all data sent by the server, on the other
  hand it's quite suspicious that the number of required reads seems to
  be connected to the number of sends on the other side of the
  connection)
* working through Python 2/Python 3 threading and thread differences;
  the lock code I used is the simplest way I could make the tests
  pass but will likely need to be modified in order to match the
  original

This commit includes 6bcb1dc3686f72b0f1af803b46883ce4f5e4b8df and closes
GH #153 

@temoto please QA - the thing that bugs me the most is this place which, after quick look at the rest of the code, seems like a typo and the change doesn't break Python 2 build but I think I'll have a longer read when I have a moment: https://github.com/eventlet/eventlet/commit/01093df590b12cc0ee6aa46c2aaf87458cf3ce78#diff-351c1d7948db1b3567d6da5f75800f81R455
@jstasiak how did you avoid handling UnicodeEncodeError here?