ENH: improve signal.convolve2d performance

Store indices in inner most loop and apply them in one typed loop one
level lower. This avoids expensive memcpy and function calls for very
cheap operations.
Improves performance by almost a factor 3 with relative small changes,
but there is still a lot of room for improvement.
MAINT: raise warnings for logm of some possibly nearly singular matrices
MAINT: add 2d convolution benchmark
Merge pull request #3287 from argriffing/logm-singular-warning

ENH: linalg: raise warnings for logm of some possibly nearly singular matrices
Merge pull request #3295 from argriffing/conv2d-bench

TST: signal: add 2d convolution benchmark
Merge pull request #3277 from juliantaylor/sig-conv2d-improv

ENH: improve signal.convolve2d performance
ENH: sparse: implement fancy indexing in dok_matrix.__setitem__
TST: sparse: turn on DOK fancy indexing tests
BUG: sparse: fix bugs in DOK setitem for multidim index arrays
ENH: sparse: implement fancy indexing in DOK getitem
ENH: sparse: fast path for DOK scalar setitem
BUG: sparse: fix logic error in DOK getitem

Since i, j can be arbitrary, also for small NNZ one needs to look up
which index in i, j it corresponds to.
BUG: sparse/dok: remove unnecessary broadcasts

_index_to_arrays already broadcasts
BUG: sparse: fix bug in dok_matrix.__setitem__ fast path
ENH: sparse: add fast path for slicing very sparse dok_matrix
ENH: sparse: some performance microtuning in dok_matrix
BUG: sparse: fix dok_matrix empty return
TST: sparse: set numpy random seed, not python random