[WIP] (Need some help) Fixed #12118 - Added ability to share sqlite in-memory database in threa...

Sqlite3 with version >=3.7.13 can share in-memory database between threads.
Built-in sqlite module of python2 comes without ability to specify in-memory database name as URI, but since python3.4 can do this,
So, need to use database name as URI to prevent fails in tests.
I'm returning URI manually, if database name is specified as `:memory:` in settings to give ability to use shared cache without specifying it manually (people will have this after update).

**Need some help:**
I tested that on different test cases, and also added django test.
When running `python runtests.py backends` it works fine, but running `python runtests.py test_runner backends` fails (the exception is like in-memory database is not in shared mode in that moment). I found that `tests.test_runner.tests.Sqlite3InMemoryTestDbs`  is causing the problem.
`DiscoverRunner(verbosity=0).setup_databases()` is broking something, so after this testcase my test can not pass, and I can not figure out why.

Everything else seems works fine, all tests (except problem described above) are passing in python2/python3.
`get_random_string()` will never allow you to connect to the same memory database instance.
You can probably use `self.connection.alias` for that so each database alias has it's own unique memory database.
This also allows it to work with `threading.local`.