ENH/PERF SparseArray.take indexing
- [x] related to #4400 (not close yet as `SparseDataFrame` indexing test is not sufficient)
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

Added more tests for sparse indexing. Fixed followings:
- `SparseArray.take` has optimized logic to omit dense `np.ndarray` creation.
- `SparseSeires.iloc` can work with negative indices. Made `SparseArray.take` to handle negative indices as the same rule as `Index` (#12676)

@jreback rebased, and now green.
 thanks @sinhrks 
