Changed Dict(ks,vs) to behave like Dict(zip(ks,vs))

Currently the lenght of ks is used to deterimine the numer of elements
in the dictionary. After this, the shortest of ks and vs is used.

An alternaltive might be to throw an error if they are of equal lenght,
but I think the same behaviour as Dict(zip(ks,vs)), is the most
intuitive.
formatting changes
Add a few missing prepare_* calls (needed when building for MCJTI)
remove special-case lowering for `for i = a:b` loops (ref #5355)

this fixes some edge-case loops that the special lowering did not
handle correctly.

colon() now checks for overflow in computing the length, which avoids
some buggy Range1s that used to be possible.

this required some changes to make sure Range1 is fast enough:
specialized start, done, next, and a hack to avoid one of the checks and
allow better inlining.

in general performance is about the same, but a few cases are actually
faster, since Range1 is now faster (comprehensions used Range1 instead
of the special-case lowering, for example). also, more loops should be
vectorizable when the appropriate LLVM passes are enabled. all that
plus better correctness and a simpler front-end, and I'm sold.
Merge branch 'master' of github.com:JuliaLang/julia
Fix #5435
Merge pull request #5419 from ivarne/dict-k-v

Changed Dict(ks,vs) to behave like Dict(zip(ks,vs))