resolver_ares: improve getaddrinfo

For string ports (e.g. "http") resolver_ares/getaddrinfo previously only
consulted getservbyname(port, "tcp") or getservbyname(port, "udp"), but never both.

It seems that checking of both work (and creating result based on that) makes for
better compatibility with stock getaddrinfo, at least on linux.
resolver_ares: fallback to threadpool

For non-network requests, like "localhost", it seems to be quite hard
to make gevent.ares to do the right (=compatible with stdlib) thing.

So we check if host does not have '.' and if that's the case,
we fallback to using threadpool.

This covers requests like "localhost", "ip6-localhost" and Python-specific
things, like "<broadcast>"

It's possible to disable this by passing use_threadpool=False to ResolverAres
or by settings resolver.pool = None.
core.ppyx: do not depend on EV_CHILD_ENABLE

it's always the opposite of _WIN32
this speeds up cythonpp.py part of the build
gevent.ares: handle string passed to set_servers()
thread: make allocate_lock alias for LockType/Semaphore

that way it does not fail when being used as class member
subprocess: fix doctests from failing

(at least on linux)
subprocess: on 2.6 move check_output from __implements__ to __extra__

this prevents test__all__.py from failing and prevents monkey from patching it
core: check that first argument to start() is not None

Previously this was handled by 'callback' setter,
but that one now accepts both callable and None, so
we need a separate check for None in start()
monkey: add Event=False argument to patch_all() and patch_thread()

if True, threading.Event is replaced with gevent.event.Event
add XXX to threadpool.py
many fixes for the testsuite; rewrite testrunner

The stdlib tests are now included in the repository. since ubuntu
does not ships them in any package.

The testrunner is completely rewritten. When testrunner.py was originally written
a lot of tests were failing and some of them were hanging. Thus testrunner.py
was focused on proving good reports and could retry the tests with a particular
test case disabled if it detected time out. Now testrunner is somewhat simpler as
we mostly concerned whether the tests pass or not. It also runs the tests
concurrently, to improve the speed at which we get the results back from travis-ci.
Some tests time execution and assert certain timings, this can fail, especially when
the number of workers is bigger than cpu count. The new testrunner will re-try
tests that failed in a sequential run, when nothing else is run. If this fixes
the problem, the test is reported as "succeeded, but only on the second try" and does
reports the whole suite as failed.

.travis.yml is fixed to download binary packages for all dependencies and use system python.

rename test__benchmarks.py to xtest__benchmarks.py to exclude it form testrunner.py.

Exclude test__count from test_thread.py, because it uses function thread._count() we don't implement

Run monkey patched tests twice, first with patch_all(), then with patch_all(Event=True)
remove util/stat.py

we no longer stores test results in a [sqlite] database
update .gitignore

[ci skip]
util/set_version.py: switch from hg to git
Add a "finally" clause with os._exit(255) in the "Child" block to make sure that the child exits without executing any unintended code if the "except" block fails.

Fixed issue #148: 'OSError: [Errno 22] Invalid argument' when gevent.subprocess.Popen() fails repeatedly.
Merge branch 'issue148' of https://github.com/vitaly-krugl/gevent into issue148