MOTOR-40 Start to separate Tornado dependency into a "framework" module.

Preliminary to supporting both Tornado and asyncio.
MOTOR-40 Start pulling framework-agnostic aspects of Motor into core.py.

Preliminary to supporting Tornado and asyncio frameworks.
MOTOR-40 Unused imports in test_motor_gridfs.
More reliable test_high_concurrency.
MOTOR-40 Put frameworkless classes in motor.core, Tornado classes in motor.

motor.core.AgnosticClient and so on are (not yet entirely) framework-agnostic,
while motor.MotorClient and so on use Tornado. create_class_with_framework()
makes a Tornado class from an Agnostic class.

A step on the road to supporting Tornado and asyncio.
MOTOR-40 Collect metaprogramming code into one module.
MOTOR-40 Make Motor's core coroutines framework-agnostic.
MOTOR-40 Begin actual asyncio support.

 Because Motor has a few internal coroutines written with "yield", this code
 raises an exception when used with asyncio: "yield was used instead of
 yield from".
MOTOR-40 Internal coroutines work with "yield" in both Tornado and asyncio.

And rename the asyncio version of MotorClient to AsyncIOMotorClient.
MOTOR-40 Make asyncio equivalent of Tornado's gen_test, and other test utils.
MOTOR-40 Test AsyncIOTestCase's failure reporting.
MOTOR-40 Detect undecorated AsyncIOTestCase methods.
MOTOR-40 Fix ASYNC_TEST_TIMEOUT environment variable.
MOTOR-40 Test that an asyncio test is prohibited from returning a value.
MOTOR-40 Move test-environment discovery into test_environment.py.
Whitespace fixes in tests.
MOTOR-44 Fix socket leak in copy_database.
MOTOR-40 Test AsyncIOClient.
Fix error when building docs.

(cherry picked from commit a8ade3a)
Rename "test --warn" to more descriptive "--tornado-warnings".

When we test network error handling, Tornado logs warnings. They are suppressed by default,
but this option allows them to be displayed.