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. 
I think this is some code to do a quick/simple benchmark

```
function testpush(n::Int)

    ret = Array(Float64, 1)
    for i=1:n
        push!(ret, 2.)
    end

    return ret
end

function testprealloc(n::Int)
       ret = Array(Float64, n)
    for i=1:n
        ret[i] = 2.
    end
    return ret
end

testpush(10000)
testprealloc(10000)

@elapsed testpush(10000000)
@elapsed testprealloc(10000000)
```

My computer is showing preallocate was a hair faster, but relatively minor differences.