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.
This is wrong; e.g., the toy data used in testing passes in X.dtype == np.int64, but we definitely do not want integer-typed means and variances. Also not sure if it would make proper sense for complex types.

Not sure if there's a compact idiom for "promote to the best floating-point type", but in the absence of that, leaving as it is.