Replace Array, Matrix, and Vector with Abstract versions

This is to allow this package to be used with other types of AbstractArrays, like SubArrays or DataArrays from the DataFrames package. I mostly just did a blind search and replace. 

For me, it passes your tests. That doesn't mean it'll directly work with other AbstractArrays. For example, `dot` and `At_mul_b` are needed for at least some of your functions. DataArray has `dot` defined, but not `At_mul_b`. Pinging @johnmyleswhite regarding DataArrays.