Adds eig, eigfact, eigvals and eigvecs for Bidiagonal

Addresses #3688
Improved bidiagonal tests
Clean up bidiagonal methods
Fix tests for specialized matrices
Reduce overtyping in Bidiagonal matrix routines
Fix bug in Bidiagonal constructor
Add tests for Bidiagonal{Float16}
Add tests for Bidiagonal{BigFloat}