BUG: changed string.lowercase to string.ascii_lowercase

Compatibility with Python3, which dosn't have string.lowercase.
Merge pull request #3973 from juliantaylor/py3-fix-1.8.x

Backport PR #3971 for 1.8.x
BUG: fix broken UPLO of eigh in python3

UPLO was cast to bytes and compared to a string which is always false in
python3.
closes gh-3977
BUG: reject invalid UPLO with ValueError in eigh/eigvalsh

to prevent unintentional use of wrong function. Restores 1.7 behavior.
Merge pull request #3981 from charris/backport-1.8-3978

Backport 1.8 3978
MAINT: Refactor eigh and eigvalsh and associated tests.

Do not convert the UPLO argument to a bytestring, it is not necessary.
Distribute parts of the eigh tests into the appropriate TestEigvalsh or
TestEigh test class.
Merge pull request #3986 from charris/backport-1.8-3982

backport-1.8-3982