Histogram type and hist methods

New histogram functionality: it creates a new type `Histogram`, and works for arbitrary dimensions. It has been proposed to move this here, and deprecate the current `hist` function in base (see JuliaLang/julia#6601).

Some decisions:
* what should happen in the case of `hist(x::Matrix)`? should this be `size(x,2)`-dimensional histogram? If so, should we cap it at some dimension (say 5), so people don't accidentally call it on a 100x100 matrix?
* should the `Histogram` type be mutable: the one advantage of this is that it would adaptive resizing when appending additional elements (in particular for streaming data).
* it would be nice to incorporate weighted vectors.