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 personally like the situation. NumPy casting rules are fine for an array
> package, but IMHO not for composite objects like estimators were the user has
> less control over the algorithm.

Casting to float64 gives significant memory overhead. I have also
observed that in some situations, it makes the code much lower. Thus, I
would say that I would love to see more flexibility, though I agree that
it is further work.