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. 
@cc7768  thanks for the benchmark. 

Here are my results using a `timeit` macro that mimics the ipython timeit:

```
julia> N = 10000000
10000000

julia> @timeit testpush(N)
1 loops, best of 3: 105.78 ms per loop

julia> @timeit testprealloc(N)
10 loops, best of 3: 43.01 ms per loop
```

I'm seeing a factor of just over 2x slowdown for `push!` compared to preallocation.

At the end of the day we are talking a few milliseconds here, so it isn't a big deal.