Fix #6372

This adds the package to REQUIRE on Pkg.clone() if it exists in
METADATA. This means that calling Pkg.clone() on a repo that's on an
old tag will result in the package getting updated to the latest
release, but that seemed preferable to making Pkg.clone() on a package
that's on a tag result in a pinned package.
more explanation of abstract types

Several points concerning abstract types eluded me when I first read the manual; I have written additional paragraphs to elucidate these points.
more explanation of immutable

Some aspects of 'immutable' escaped me when I first read the manual and were clarified by Stefan Karpinski.  II think other new users might benefit from this clarification, so I put some additional paragraphs in the manual.
added a paragraph about elementwise

As far as I can see, elementwise operators are never introduced or defined in the manual, so I added a paragraph to introduce and define them.
Fix emacs highlighting of symbols that contain keywords.

Previously, symbols such as `prepend!` or `net_required_for` incorrectly
had `end` and `for` highlighted.
`in` is a keyword, so highlight it.
Highlight types in all type annotations.
Highlight parent types in type declarations.
Highlight parameter types and subtypes.
Don't highlight that that happens to contain a constant.

For example, `Inf` in `StaticVarInfo`.
PriorityQueue: use O(logN) algorithm for dequeue!(pq, key)
Still return a tuple from `peek(pq)`
Fix type-stability of setindex!(::PriorityQueue, val, key) (return val)
Expand style guide on naming

An attempt to capture the discussion at https://groups.google.com/d/msg/julia-dev/8ty9cQe_uGM/mkk3PiDG17wJ,
particularly https://groups.google.com/d/msg/julia-dev/8ty9cQe_uGM/Qgu9I6lN-LgJ
Add fallback constructor for similar() on ranges that takes a dims::(Integer...) argument. This allows similar to work on ranges where the return type on size() doesn't necessarily equal Dims::(Int...). Fixes #7709.
Fix for #8042: Instead of loading value and casting, cast pointer and load.
Correcting type regex.
`throw` and `error` are built-in functions that we should highlight.
Highlight the function name, not the module name, in declarations.

For example, the code:

function Base.getindex{T,S}(x::ArraySplit{T,S,Nothing}, i::Int)
    (i >= 1 && i <= x.k) || throw(BoundsError())
    copy!(x.buf, 1, x.s, (i-1)*(x.n-x.noverlap) + 1, x.n)
end
Merge pull request #8043 from JuliaLang/jq/range

Add fallback constructor for similar() on ranges