Optimisation for non-linear static cases working (non-Linear solver robustness improved)

General:
Convergence criterion for non-linear solution modified. The solver is more robust.
Optimiser tested with different optimisation algorythms (pyOpt interface also added)
The capability to reuse a previous solution (handy for optimisation) has been added

Fortran:
- non-linear solver robustness:
	- lib_solve.f90: library added to core fortran code to include methods to check the Newton solver convergence
	- cbeam3_sol.f90: modified to use new criteria to check convergence
- reusability of previous solution:
	- fwd_main_prealloc.f90: the initialisation of {Pos/Psi}Def to {Pos/Psi}Ini has been made conditional to allow to use a previous solution (passed through the python-fortran interface)

Python:
- reusability of previous solution:
	- xbcomponent.py: modified output allocation and added a flag to allow reusability of previous solution.
	- beamvar.py: ({Pos/Psi}Def preallocated to zero to allow conditional initialisation in Fortran
- optimisation: pyopt_driver & ipoptdriver (not working) plugins added
- minor:
	- design.beamelem.py & design.isosec.py:  isorect_fact_torsion cross-section added.

Remarks:
- the reusability of the previous solution required changed on both the Fortran (initialisation of {Pos/Psi}Def made conditional and Python (initialisation of {Pos/Psi}Def) side.