Merge pull request #5 from rithram/master

Some notes and an image with notation added.
Counters and Jensen-Bregman divergences added to the Divergence classes

* Counters are added to the Bregman Divergence class to keep track of
  the number of different operations (Bregman divergence computation,
  gradient computation and the gradient conjugate computation)
* A function added to the divergence classes to return the strong
  convexity coefficient for the generating function
* A function is added to compute the Jensen-Bregman divergence with
  respect to the generating function (given by f(x) + f(y) - 2f(x+y/2))
A check function added to bmst::utils
Modifications to work with the new Divergence class
Bregman ball tree templatized on Bregman ball bound

This allows us to use different bounding balls and pruning rules
Comment fix + minor fix in BregmanBallTree
Repeated computation of the query gradient removed

The caller of the CanPruneRight function is now responsible for
computing and passing the gradient at the query. This removes
the repeated the computation of this gradient (otherwise, it was
computed at every call of CanPruneRight)
BBTree fixed to use new BBall API
Left NN search modified to match Cayton's less aggressive pruning

This is useful when pruning doesn't work that much
Case considered where the ball center might have a zero
Minor comment edit
Closed form bounds added to a new bound class for single tree

* The closed form bounds found using properties of the generating
  function is applied to the single tree case.
* The test_search_main.cpp is modified to use this new bound.