General cleanup of linear algebra routines

- Better error messages
  - [x] Use meaningful `Exception` in `Base.cov`
  - [x] Change generic `error()` calls to `throw(DimensionMismatch(""))`
    where appropriate
  - [x] Interpolate invalid values into error messages
- Generic error handlers for consistent error handling
  - [x] Generic LAPACK error handlers
    - [x] `@assertargsok` throws `ArgumentError`s on negative `info` statuses
    - [x] `@lapackerror` adds throwing `LAPACKExceptions` on positive
      `info` statuses
    - [x] `assertnonsingular`, `assertposdef` throw `SingularError`s and
      `PosDefException`s on positive `info` codes
  - [x] Eliminate generic `error`s for exceptions, esp `KeyError`s in
    `getindex` methods
  - [x] Generic `umferror()` error handler for UMFPACK
    - maps UMFPACK errors to native Julian `Exception`s where
      appropriate
    - maps UMPPACK warnings to throwing `IllConditionedMatrixException`s
  - [x] Remove `info`s as returned quantities from LAPACK wrappers
    (except for `getrf!`, `potrf!`, `pstrf!`, where this is useful for
    higher level routines in `LinAlg`)
- throw `MatrixIllConditionedException` on UMFPACK warnings
- Better error detection
  - [x] Inserts more checks for singular elements in `Diagonal` matrix
    algebra where necessary.
- Genericizing input and output validation
  - [x] Replace square matrix checks with `chksquare`
  - [x] Add macros to simplify testing for bad matrices
    - `@assertrank`, `@assertrank2`: rank deficiency
    - `@assertnonsingular`: singular matrices
    - `@assertposdef`: positive definiteness
  - [x] Add mode validation for `uplo` with `@chkuplo`
  - [x] Add `@isok()` macros to simplify status variable interpretation in
    UMFPACK and CHOLMOD
- Simplify code
  - [x] Consolidate `*` for special matrices
  - [x] Convert simple functions to one-liners
  - [x] Collapse simple `if/else` branches to ternary `?:`s
  - [x] Collapse nested loops using `for i=..., j=...` multiple loop syntax
  - [x] Remove trailing semicolons
  - [x] Consolidate method definitions using type `Union`s and default
    keywords
  - [x] use `apply` to choose appropriate arguments to identical function
    calls
  - [x] use ternary `?:` to collapse appropriate function calls on identical
    arguments
  - [x] Replace appropriate `Union`s with `BlasReal`, `BlasComplex`, `BlasFloat`
- [x] Standardize use of explicit/implicit `return`s
- [x] Simplify code by explicitly writing out zero-padding steps
- [x] Change bitwise & to logical &&

TODO
- [ ] `thin` should probably be a keyword argument.
- [ ] remaining `error`s need a new `DomainError` constructor
- [ ] consistent error messages with `DimensionMismatch`es