John Myles White's suggested additions of Multinomial and Dirichlet distributions
adding ref_shape and assign_shape_check to clarify our array shape rules
long-needed update to type names in julia-mode
Merge branch 'distributions'
file.jl: the name `dir` is too generic; ditching it for now.
strings: add search_count function for counting search matches.

Also rename the spl[itter] identifier in replace to pat[tern],
since replace doesn't split, so the name makes little sense.
box/unbox touch-ups: type corrections for unboxing, formatting.
Update libuv sumodule URL to use the git:// protocol.

Numerous people seem to have trouble with the https:// protocol.
If you want to use a different protocol, just edit the git config
file (.git/config) and update the setting under the deps/libuv
stanza:

    [submodule "deps/libuv"]
    	url = git://github.com/JuliaLang/libuv.git

Put whatever URL you want to use in there.
randi: Uint128, Int128 support.
base: allow using arbitrary ASCII symbols for integer output.

If you want non-ASCII symbols, you'll have to generate ASCII
and then translate and transcode to UTF-8. That's beyond the
scope of printing integers, imo. This is already more generic
than is probably necessary, but it is kind of fun that you can
do things like generate strong ASCII passwords like this:

  julia> base(62,randi(Uint64))
  "cZkH0mnXADB"

  julia> base(62,randi(Uint64))
  "1WgQjGFTDOU"

  julia> base(62,randi(Uint64))
  "aSPs2nMsJAk"
times(f,n): call f() n times.

Conveniently used with do-block syntax:

  julia> times(5) do
           println(base(62,randi(Uint128),22))
         end
  0Rb8tnoSyuAcinovJq9jAE
  1WHYnWPEgOXDtYHtNgBpPW
  2IXQ1ospR7jHv8ETQKbStT
  5EMEyLJiFZPgThECuwSL6H
  3YFPcj8U9HPEymO4qXZNyj
Use plain old HTTP for libuv submodule cloning.
error for inexact float to int conversion (closes #725)
only allow int-valued floats as indexes (closes #625)
version: allow the trailing pre-release identifier to be empty.

Also, sort the empty string before all other identifiers, thereby
making the version v"1.2.3-" come before all v"1.2.3" versions.
This will be handy when we start specifying version ranges in the
package manager and want to be able to stop a version range before
any variant of some version, including any and all pre-releases.

Something similar could be done with build versions, but it would
be more complicated because you'd want the empty identifier to be
*after* all other identifiers, and less useful because typically
you have a first-known good version that serves as a closed end-
point for your interval of acceptable versions.
make int* and uint* only call convert by default, and do rounding for
float and rational arguments. the function forms are coercions.

implement round and iround for Rational
Merge branch 'master' of github.com:JuliaLang/julia
fix silly comment typo in last commit
version: allow empty prerelease ident only as the sole "extra".

Specifying versions like v"1.2.3-foo." and v"1.2.3-+foo" is pretty
confusing and doesn't have any clear practical use. The v"1.2.3-"
form is the only one that is allowed.
`insupport()` test for `logpmf()` of a Multinomial was backwards.
version: actually notice the trailing "-" in v"1.2.3-" literals.