fix #4509
fix #4506
Allow all integer types in permutation vector
Merge pull request #4512 from JuliaLang/anj/permute

Allow all integer types in permutation vector
warn: remove `depth` keyword, no backtraces; warn(err::Exception).

Since it's completely unclear what this does or how to use it, I'm
deleting this feature. When `depth=0` backtraces seem to show, while
when `depth=1` they don't or something like that. Now we just don't
ever show backtraces for warnings. This keyword didn't do anything
for the info function since we never print backtraces there.

Also added a warn(err::Exception) method that prints an error the
way it would look if allowed to kill the current task, but doesn't
actually kill the current task. This is useful if catch an error
and want to show it to the user but continue running.
string padding: cpad, fix lpad and rpad (use strwidth not length).

The cpad function center pads a string by making appropriate calls
to lpad and rpad. The lpad and rpad functions should have been
using the strwidth function to determine how many columns strings
take up, but before they were incorrectly using `length` instead.
Pkg.build: this is the long-awaited Pkg.fixup replacement.

Fundamentally, it's not really that different. Instead of trying to
topologically sort packages, I just install them in alphabetical
order and then use depth-first recursion in build to make sure that
dependencies are built before the things that depend on them. If
two packages depend on each other circularly, then one of them will
get build firts, which may not work; we may have to deal with that
at some point, but let's worry about that if and when it happens.

Philosophically, this change takes the approach that as far as the
package installation machinery is concerned, build failures aren't
really it's problem – it will run the build script for a package
when that package is installed or updated, but if the build script
fails, the package is still considered to be installed. A big, red
warning is printed for the user so that they know the package is
not likely to work, but the package is left installed so that they
can go into its directory and try to fix it. This approach seems
likely to make installing packages with binary dependencies a lot
less annoying.
Merge branch 'master' of github.com:JuliaLang/julia
improve parallelism in require/reload. fixes #4459
Update README.windows.md
allow serializing Tasks that are done or haven't started yet. fixes #4516
sorting: use `@inbounds` to eliminate bounds checks.

Shaved of 7% for sort and 25% for sortperm.
add lexcmp and lexless for lexicographic comparison

step 3 of #4235, closes #4235
Merge branch 'master' of github.com:JuliaLang/julia into jb/minmax

Conflicts:
	base/ordering.jl