Add partial_fit to GaussianNB

Uses a [method due to Chan, Golub, and LeVeque](http://i.stanford.edu/pub/cstr/reports/cs/tr/79/773/CS-TR-79-773.pdf) to perform online update of the model parameters in `GaussianNB`. Does not implement sample weighting.

Added tests to `test_naive_bayes` to ensure that `partial_fit` called on the entire toy set produces the same result as `fit`, and that it produces the same result even if the toy set is fitted in two parts.

TODO: `fit` could be a thin wrapper around `partial_fit` rather than duplicating code.
I agree it's not the easiest expression to evaluate. FWIW it's taken directly from line ~54 of the FORTRAN code presented in the Stanford tech report, which is all about numerically stable algorithms for updating mean and variance.

The only divergence between the algorithm here and the one in the TR is that I use straight `numpy.sum` rather than a tree-structured reduction. It seems that the numpy authors have improved the stability of that function, though: https://github.com/numpy/numpy/issues/2448#issuecomment-35655527

Will refactor the scalar expression.