RFC: WIP: start to remove pointer(::Array) & friends

I think the pointer and convert(::Ptr,Array) functions make it altogether too easy to make unmanaged pointers. Leading to unsafe situations such as the following:
```julia
julia> type X
       x::Ptr{Void}
       end

julia> X([1,2,3])
X(Ptr{Void} @0x00007ffc644a6e40)
```

Furthermore, it encourages `ccall(:a, Ret, (Ptr{T},), pointer(T))`, which is identical to the call without the `pointer`, but is potentially missing a GC root.

However, attempting to remove the pointer function from base reveals a rather heavy dependence on this function. A few of the usages of the function in the blas libraries are there to compute an offset pointer. However, many or most of these usages seem largely unnecessary.