RFC:QR decomposition in julia

This pull request started as a QR decomposition in julia such that e.g. `Matrix{BigFloat}` can be decomposed. However, while adding the tests I also decided to go through more combinations of types which revealed some problems and I have therefore changed a lot of the promotion rules. This request should therefore also fix #5178. I decided that the `!` versions shouldn't promote but assume that it has called with a reasonable type.

The option for returning the condition number in `sqrtm` was broken and undocumented so I decided to remove it. There was also a few bugs in leading dimension calculations in `lapack.jl` and more the factorization and special matrix types have been changed from `type` to `immutable`.

I am aware that this pr includes the `balance` option to `eigfact`, but I expect that the balance pull request will be merged very soon.