docstring changes & refactored GlobalDemoModel

Due to some pylint results, some functions have been moved out of the
GlobalDemoModel class into the model global_demo_model. Also massive
amount of docstrings have been written.
country.Country __init__ signature has changed
recalculate_world no longer calculates f

For efficiency, since recalculate_world is called many times when the
model is iterating, the calculation of f_dagger and f_star are moved to
class methods, and are calculated on demand.
recalculate world no longer calculates B

For efficiency, B is now calculated on demand
Country._import_reqs efficiency improvement

i = (I - D)^-1 Dx has been replaced with simple pandas multiply and
divide, which works elementwise anyway,
Country._domestic_reqs efficiency improvement

Got rid of expense pd.DataFrame.dot operation for diagonal matrix D, and
replaced with simple pd.DataFrame.mul