* Noise API changes for Kriging based surrogates (276, 257 thanks anfelopera):
- add a new tutorial notebook on [how to deal with noise in SMT](https://github.com/SMTorg/smt/blob/master/tutorial/SMT_Noise.ipynb)
- rename <code>noise</code> as <code>noise0</code> option and is now a list of values
- add option <code>use_het_noise</code> to manage heteroscedastic noise,
- improve noise management for MFK (different noise by level),
- add option <code>nugget</code> to enable the handling of numerical instabilitily
- [matern kernel documentation](https://smt.readthedocs.io/en/latest/_src_docs/surrogate_models/krg.html#kriging)
* Add <code>predict_variance_derivatives</code> API (256 , 259 thanks Paul-Saves)
- add spatial derivatives for Kriging based surrogates
- fix respect of parameters bounds in Kriging based surrogates
* Notebooks updates (262, 275 thanks NatOnera, 277 thanks Paul-Saves )
- [SMT tutorial](https://github.com/SMTorg/smt/blob/master/tutorial/SMT_Tutorial.ipynb)
- [SMT EGO tutorial](https://github.com/SMTorg/smt/blob/master/tutorial/SMT_EGO_application.ipynb)
- [SMT Mixed Integer tutorial](https://github.com/SMTorg/smt/blob/master/tutorial/SMT_MixedInteger_application.ipynb)
* Kriging based surrogates refactoring (261 thanks anfelopera)
- inheritance changes: MFKPLS -> MFK, KPLSK, GEKPLS -> KPLS
- improve noise options consistency
- improve options validity checking
* Code quality (264, 267, 268 thanks LDAP):
- use of abc metaclass to enforce developer API
- type hinting
- add 'build system' specification and requirements.txt for tests, setup cleanup