Support for reducible Markov chains

This commit makes a number of changes including adding support for
calculating stationary distributions on reducible Markov chains inline
with QuantEcon/QuantEcon.py#79.

* Use Graphs.jl to determine the irreducible subsets of a reducible
Markov chain
* Changed ``DMarkov`` to `MarkovChain` in line with ``mc_tools.py``
* Move to [Distributions.jl](https://github.com/JuliaStats/Distributions.jl) for sampling
* Removed support for ``Matrix`` types: this is not really necessary,
but I think we should either pick matrices or ``MarkovChain`` types rather
than maintaining support for both. If we wanted to stick with matrices, we could check for the validity of the stochastic matrix using a macro. 
From what I understand `push!()` is as fast (and sometimes even faster) than preallocating, and much more elegant in my opinion.