Remove vertex_index(::Integer), make special case for SimpleGraph

Thanks @sbromberger
Fixes #131
Fixes #127
Closes #133
Double checked that it did not specialize how you'd hope (let me know if I did something wrong):

```julia
immutable A
    int::Int
end
immutable B
    int::Int
end

g(x) = x*x
f(::A, x::Int) = 2x
f(b::B) = b.int

a_only(a::A, x::Int) = f(a, g(x))
b_only(b::B, x::Int) = f(b)
function a_or_b{T}(v::T, x::Int)
    if applicable(f, v)
        return f(v)
    end
    return f(v, g(x))  
end
```