add two trust region optimization algorithms and corresponding tests
testing bugfix
a couple minor fixes
MAINT: remove a redundant function definition
MAINT: integrate the trust-region optimization algorithms into the _minimize.py framework
MAINT: remove fmin_* functions for trust-region optimization, favoring the minimize() wrapper
MAINT: make the magnitude of the gradient a feature of the local quadratic approximation of the objective function
STY: wrap a couple of multi-lines in optimize/trust-region
MAINT: use selected imports to ease reading in optimize/_trustregion
TST: add a setUp method to avoid repeated definitions
ENH: define message field in Result of optimize/trust-region
ENH: extend the quadratic model class in optimize/trust-region

- The class is now an abstract/base class; child classes must implement
  the `solve` method which is specific to the kind of model (dogleg, ncg).
- Child classes for dogleg and ncg methods are defined in their respective
  modules.
- Rename `solve_subproblem` parameter into `subproblem`, this should now be an
  instance of the quadratic model class.

In the base class:

- Turn a few methods into properties, to make it clearer where computations
  take place.
- Make parameter to `__call__` mandatory; call `m.fun` (or m(0)) when the
  objective function value is needed.
- Embed `_help_solve_subproblem` as a `get_boundaries_intersections` method
  (not strictly necessary but clearer this way IMO).

- Move `cauchy_point` and `newton_point` methods into dogleg quadratic
  subproblem subclass.
DOC: declare options for trust-region algorithms
FIX: remove unused tolerance parameter in optimize/trust-region

There's currently no way to set this parameter from the caller side. So remove
it from the arguments list.

Also remove a few left-over XXX.
Merge pull request #526 from argriffing/trust-region