Make flipdim(X, 1) call reverse(X) for AbstractVectors

I was surprised to find that `flipud` and `reverse` have different behavior for ranges:

```julia
julia> flipud(1:2)
2-element Array{Int64,1}:
 2
 1

julia> reverse(1:2)
2:-1:1
```

This PR makes `flipdim(A::AbstractVector, 1)` call `reverse(A)`, which should unify these behaviors. I added `reverse` for `AbstractVector` because otherwise we'd fall back to the definition for arbitrary iterators, which returns an iterator instead of an `AbstractVector`, and because it makes sense for it to exist anyway.