Bug fixes in LSR1 and Trunk Frameworks.

Fixed two errors in the LSR1 matvec computation; one fix also applies to LBFGS.
Fixed a small error quasi-Newton versions of the Trunk framework.
Refactored TRUNK solver using quasi-Newton methods.

Individual TRUNK classes with each quasi-Newton approximation were replaced
with a single LQNTrunkFramework class where the user specifies the desired
quasi-Newton method. (This also eliminates a circular import issue from the
previous commit.)
An N-dimensional Rosenbrock problem has been added as a demonstration.
Added matrix-free elements to NLPModel

Moved the Jacobian product functions and counters to NLPModel class.
Will try to migrate to this class since MFModel has so few new elements.
Merge branch 'lancelot' of git://github.com/syarra/nlpy into lancelot

Conflicts:
	nlpy/optimize/solvers/lbfgs.py
Adapted Rosenbrock_test.py to refactored TRUNK framework

- also added second derivatives
- small documentation fix in nlp.py
Introduced separate NullHandler() class for python 2.6.x compatability.
Merge branch 'lancelot' of git://github.com/syarra/nlpy into lancelot
Fixed link between rho values in problem and solver classes.

Major bug fixed so that correct rho value is used in augmented Lagrangian
function and gradient evaluations.
Also added a Hessian restart for every major iteration (minor fix).
Added some safeguards to Lancelot optimizer.

- added a small-trust-region exit condition to sbmin.py
- added a safe exit condition to auglag.py so that the optimizer exits after several failed inner minimzations
Some additions to handle unconstrained case directly in aug. Lagrangian.
Small error created by previous commit fixed.
More safeguards + bug fix in exact Hessian computation

- Added safeguard in auglag.py to prevent optimality tolerances from becoming
much less than desired optimal (might be changed)
- Added trust region safeguard to ensure machine-zero change in function
forces a trust-region contraction (no effect of machine-epsilon correction)
Added implementation of magical steps to SBMIN algorithm.

The conservative version given by Conn et al. (SIOPT, 1999) is used here to
reduce the number of expensive function calls.
The magical steps are now default in the augmented Lagrangian algorithm.
Refactor to give user control over magical steps.
Added automatic range constraint handling for Lancelot.
Format cleanup in Lancelot
Removed trust region safeguard (ineffective)

- added ability to pass initial function and gradient data to sbmin from
lancelot (simplifies some code)
Code optimizations to avoid repeated function evaluations.

- added '_last*' elements to augmented Lagrangian problem and checks for
identical x values on function entry
- moved magical step computation to eliminate extra gradient call on entry
to trust region BQP solver

The Lancelot solver shown in this commit has the correct number of calls to
obj, cons, grad, and jac/jtprod of the original NLP.
- Created a SlackNLP class for convertir any nlpmodel into a NLP with only
  equality constraints
- Created an alternate AugmentedLagragian Class using SlackNLP
- Tested BQP and SBMIN on test problems from the HS collection and on some
  test problems from Cute Collection (which n<=100).
  Results are stored in tests/BQP/resultsBQP.txt and in
  tests/SBMIN/resultsSBMIN.txt.