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. 
My line of thinking for taking out the initial state from the type definition was mainly that it was functionality that we were providing explicitly with inputs to the functions, e.g. here
```
mc_sample_path(mc::MarkovChain,init::Int=rand(1:n_states(mc)),sample_size::Int=1000)
```