check integer truncation (#5413) and make more operators follow T+T => T (#3759)

the sysimg builds, but still need to:
  - check same-size signed<->unsigned conversion
  - make tests pass
get numbers test passing with checked integer conversions and type-stable arithmetic
make a couple things safe for checked signed<->unsigned conversion
check signed<->unsigned conversions

this would be a bit cleaner without the code in intfuncs that dispatches
on Unsigned.

signed() and unsigned() are convenient for testing bit patterns in the
test suite. for now replace with assigned() and asunsigned().

uint8(x) is convenient for moving bytes around, so it remains unchecked.
we should perhaps rename this to byte(), and either eliminate uint8()
entirely, or make it checked.
get dates tests passing with checked signed<->unsigned conversion
Merge branch 'master' of github.com:JuliaLang/julia into jb/checked_int_trunc

Conflicts:
	base/number.jl
get a few more things working with checked integer conversions
Merge branch 'master' of github.com:JuliaLang/julia into jb/checked_int_trunc

Conflicts:
	base/intfuncs.jl
make signed() and unsigned() unchecked. check only in convert()

a few fixes in base for the convert and arithmetic changes

get all tests passing
add a bit of widening to reductions, to make up for the new
type-preserving arithmetic.

allow reducedim(+, A, 2), which previously gave
```
ERROR: `reducedim_init` has no method matching reducedim_init(::IdFun, ::Function, ::Array{Uint8,2}, ::Int64)
 in reducedim at reducedim.jl:217
```
Merge branch 'master' of github.com:JuliaLang/julia into jb/checked_int_trunc

Conflicts:
	base/reduce.jl
fix more cases of widening in reductions

also fix sum_kbn on empty input
fix more issues with integer conversion in random number generation
Merge branch 'master' of github.com:JuliaLang/julia into jb/checked_int_trunc
Merge branch 'master' of github.com:JuliaLang/julia into jb/checked_int_trunc

Conflicts:
	base/reduce.jl
Don't rebuild stringreplace so often
make [] give an Any array
Ensure ! in a macro invocation is highlighted correctly.
Highlight function names when defined with the assignment syntax.
Merge pull request #8490 from eschnett/Makefile-stringreplace

Don't rebuild stringreplace so often