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. 
Just to make a comment (though I am not sure if this is exactly related to what you want to discuss):

I usually identify a Markov chain wtih its associated stochastic matrix (in the finite-space discrete-time case). As a stochastic process, the distribution of X_0 has to be specified, but a Markov chain has more structure than just a general stochastic process, where a main issue is whether a certain property holds depending on or independent of the initial state/distribution, in which case it seems to make more sense to leave the initial distribution unspecified (and consider a *class* of Markov chains which share the same transition matrix and are parameterized by the initial distribution).

Of course there may be other cases where the initial distribution should be specified as part of the definition of the Markov chain; it depends on the purpose of the application.