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.
> If we want optional float32 support, that should be done explicitly
> with a constructor arg.

I think that I disagree here: this is not the way it is done in numpy,
and users will expect scikit-learn to behave has numpy.