Start outlining the Manager classes (#7852)

These will keep track of the running measurements and reporting tasks.
Outline the Measurements and NetTest classes (#7852)

These wrap the NetTestCase and implement the failure and retry logic.
NetTest is responsible for loading the test classes and methods.
Measurement is responsible for bundling sets of test classes, methods
and inputs.
Outline the rate limiting abstract class (#7852)

Classes that impose constraints on timeouts and issue rate go here.
Outline the base class for tasks (#7852)

Tasks are the jobs that get handled by the managers.
Start outlining the unittests for manager (#7852)

This should be split up into further blocks
Properly rename MeasurementsManager
Refactoring of reporting managers

Make the dependencies between modules much clearer
Sketch out a graph that illustrates such depedencies
Move Measurement and ReportEntry into the tasks module
Renaming of measurements methods
Move error handling functionality to the errors module
Function that will transform an object into a listiterable

Will return the iterable if it's an iterable
Re-organize module structure
Work on TaskManager and write tests for it

Changes to the API of the MeasurementManager and ReportManager
Work with aagbsn to make the TaskManager pass all tests

Tests will retry to run until the retry limit has been reached
Test failures are properly kept track of
Write some unittests for NetTest class
Add loadNetTest to NetTest

loadNetTest populates the test_cases from a file on disk or a file-like object
like StringIO
(cherry picked from commit c1cabc5a0e510cf38a59a5591630c61cb0983978)

Conflicts:
	ooni/measurements.py
Move NetTest over to nettest module
Delete measurements module
Fix import inside of nettest
Rename test_manager to test_nettest

Remove duplicated tests