Use readlink to identify the default editor via /etc/alternatives/editor. ref. #4728

Also use "run" for launching nano because it's not a gui editor.
use `basename` and `realpath`
Introduce variables `edpath` and `edname` in edit()
fix macroexpansion bug in keyword arguments

The names of keyword arguments are externally visible, so they are very
hard to rename. This commit simply avoids renaming or qualifying them,
so collisions are possible but without them everything works fine (which
was not the case before). To do this better we'll have to rename them but
also carry around the original symbol for matching purposes, which will
be pretty annoying.
Base.Git = Base.Pkg.Git [fix #4881]
Merge pull request #4761 from elehcim/patch-2

Use readlink to identify the default editor. ref #4728
tweak edit() to handle names beginning with "emacs"
update help for produce and consume

add links to NEWS and remove redundant entry
fix behavior and docs of nextpow and prevpow. closes #4819
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
Fix doc typo
fix #4884, isqrt for Int64 and Int128
Fix typo in README.md
add 1-argument dict constructor, from anything that generates pairs
try to fix build failure due to 11def4933cb20a504a76168f286497dba8dad459