Move Newton loop into nonlinear.py, Testing Derivatives

Newton loop is moved out of lssode.py into nonlinear.py. The loop
now contains initialization via solver=lsssolver, as well as call
to solver.lss. This way, the derivative computation is not transported
over more that one Newton step. Therefor, memory consumption is
reduced. Piggyback and optimization should be done within this
iteration.

Lssode.py: Variable self.t (time) is not used as input/output anymore,
since derivative of cumsum() is not implemented correctly. Instead, all
computations now solely base on dt and u.

Derivatives of the components of the shifted Lagrangian with respect to
u and dt are tested against finite differences.

NEXT: Assemble the derivative terms for Piggyback.
Bugfix in computation of dfdu

Functioncall dfdu(u,s) does not change input variable u anymore.
Update adjoint variable in Newton loop !!preliminary version!!

Adjoint variable are initialized in LSS__init__ and passed through
call to lssSolver.

TODO: Test and verify update of adjoint variables.
Piggyback approach not converging

Derivative terms are assembled for Piggyback iteration. All derivative
terms are tested against finite differences (at least at one or two
points) at the first as well as the fifth iteration. They match
perfectly.
Nevertheless, the adjoint variables do not converge. The adjoint update
remains constant such that the adjoint variables grow during the
iterations.

TODO: Find bug !
Testing black-box differenciation of J wrt mu

Black box differenciation of J wrt mu matches finite differences.

TODO: Check reduced gradient with nonconverging adjoints in each
iteration.
Computation of reduced gradient during piggyback converges

Reduced gradient N_s is computed with (nonconverging) adjoint variables.
Surprisingly, the reduced gradient does converge during piggyback
iterations. Furthermore, it matches with finite differences and blackbox
differentiation of J wrt mu (relative error 0.1%).

TODO: Compute Jacobian of (G1,G2) wrt (u,dt) and check its norm. Is it
less than 1?? Contractivity??
Computing eigenvalues of Jacobian
Restructuring the code and testing G^2(y)=G(G(y))

Evaluation of Costfunction now in nonlinear.py.
Update of primal and adjoint variables now in nonlinear.py aswell:
  lssode only computes and returnes the update G1 and G2,
  solver.u and solver.dt are then updated in nonlinear.py

Testing Piggyback approach for more than 1 update in G:
  In each Newtonloop, 2 (or more) updates of solver.u are performed.
  The resulting Piggyback iteration still produce diverging adjoint
  variables, but converging reduced gradient. Wondering why ...
minor changes