build_multiregion_Gamma + helper functions + tweaks/bug fixes

New Functions:
--------------
* build_multiregion_Gamma()
* matrix_norm()
* ddiag()
* diaginv()

Tweaks:
* Make aggregation vector (AV) argument optional for
  _aggregate_greions_vectorised. If none, use self.regions and assume
  all regions get aggregated.

* new default: self.regions=1 #region
* use diaginv in a few places instead of np.diag(np.linalg.inv())
add all aggregation constructs + improved V_bar / V_tild

Added constructs:

aPC
aPSC
aAAC
LSC
ITC
BTC
CTC

If no Ebar defined and V square, assumed primary production on diagonal
for Vbar and Vtild, and log this assumption (allows for BTC without
E_bar)

Also, more unit testing for automatic definition of Xi and Gamma

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
	modified:   pySUT_UnitTest.py
Add option to not remove empty rows/cols in matrix_norm [default]

* As default argument to all constructs in pySUT, these constructs
  preserve all rows and columns by default, even when none

* Adapt and regroup unit tests

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
	modified:   pySUT_UnitTest.py
Double speed of alternate_tech when extensions present by avoiding redundancy

* reflects commit 33d501ec9738d516e7156a6d7a07dd51cf34f1be in
  allocation_construct.py

* alternate_tech responsible for producing A_gamma and S_gamma
  simultaneously, which avoids repeating the long while loop responsible
  for the "theSum" calculation

* also, more efficient build_multiregion_Gamma

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
rename functions + make some private; harmonize notation

private functions:
	__pa_coeff()
	__alternate_tech()

renamed functions:
	build_E_bar
	build_mr_Xi
	build_mr_Gamma

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
	modified:   pySUT_UnitTest.py
Give priority to A and S in constructs + faster matrix_norm

* Change order of returning arguments:
	A, S, nn_in, nn_out, Z, F_con

  This is the case because, for psc_agg and lsc, Z and F_con are now
  optional, and by default not returned (not really meaningful).

* Redundancies removed in matrix_norm, aligning with "upstream" commit
  8265f81d25bd785948606523b20449e746245e4a in allocation_construct

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
	modified:   pySUT_UnitTest.py
move functions out of class; documentation; pylint

* aggregate_regions_vectorized did not benefit from being inside object
* same with aggregate_within_regions

* further improvement to matrix_norm + alway return same number of
  variables

* pylint/pep8
* Documentation

 On branch dev_constructs
 Changes to be committed:
	modified:   pySUT.py
	modified:   pySUT_UnitTest.py
Add European System Construct

  On branch dev_constructs
  Changes to be committed:
 	modified:   pySUT.py
 	modified:   pySUT_UnitTest.py