Make Period + CompoundPeriod communatative. Partially fixes #9214
Merge pull request #9215 from JuliaLang/jq/periods

Make Period + CompoundPeriod communatative. Partially fixes #9214
Fix -(::Period,::CompoundPeriod).
Merge branch 'master' of https://github.com/JuliaLang/julia
fix #9214: canonicalize CompoundPeriod
throw MethodError, not ArgumentError, for undefined Period/Time/Date operations
Merge pull request #9218 from stevengj/period_methoderror

throw MethodError, not ArgumentError, for undefined Period/Time/Date ops
Bump OpenLibm to 0.4.1.
Use openlibm on ARM.
juliatypes.jl: complete subtype algorithm

I believe there are now no more known-unhandled cases. There might be
bugs and it might be highly inefficient. The bookkeeping for the
search problem is quite tricky.
Merge branch 'master' of github.com:JuliaLang/julia
implement rand(::Range{BigInt})

* Previously, calling e.g. rand(big(1:4)) caused a stack overflow,
  because rand(mt::MersenneTwister, r::AbstractArray) was calling
  itself recursively. This is fixed here, but a mecanism handling
  not-implemented types should be added.
* RandIntGen is renamed to RangeGeneratorInt.
* A type RangeGeneratorBigInt similar to RangeGeneratorInt (both
  subtypes of RangeGenerator) is introduced to handle rand on
  BigInt ranges. RangeGenerator is the generic constructor of such
  objects, taking a range as parameter.
  Note: two different versions are implemented depending on the
  GMP version (it is faster with version 6 on big ranges).
* BigInt tests from commit bf8c452112 are re-added.
Merge pull request #9122 from JuliaLang/rf/rand-bigrange

Implement rand(::Range{BigInt})
fix #9216: more consistent units for Period arithmetic
Merge pull request #9220 from stevengj/periodarith

fix #9216: more consistent units for Period arithmetic
Merge commit 'refs/pull/origin/9217'

Conflicts:
	base/dates/periods.jl
Add -O switch and add SLPVectorizer/BasicAliasAnalysis under it.
Change pass order to more closely match Clang's.
Add patch to LLVM 3.3 with enhancements for vectorizing tuples.
The patch contains functionality and tests backported from
SLPVectorizer changes added to LLVM 3.5.0.
minor cleanup of DimensionMismatch error

* change field from name -> msg to align with other error types
  The majority of DimensionMismatch errors do not return the original
  methodname so this is a bit of a misnomer
* change type of msg from ASCIIString -> AbstractString (closes #8984)
* Add convenience constructor `DimensionMismatch()` for the common case
  where no err msg is provided
add more Period conversions, further canonicalize CompoundPeriod, and throw InexactError for Period conversion that would involve truncation (fixes #9171, fixes #9169)
juliatypes.jl: next round of failing tests