add simple keyword arguments

Function calls: keyword arguments are collected and passed via a new
`Keywords` object:

    julia> f(kw::Keywords, args...) = (args, kw)
    # method added to generic function f

    julia> f(1, a=3, 2, b=4)
    ((1,2),Keywords(a=3, b=4))

Method definitions: here, a keyword argument creates a new local variable
whose value is overridden if called with a keyword of the same name:

    julia> g(kw::Keywords, args..., x=0) = (args, kw, x)
    # method added to generic function g

    julia> g(1, a=3, 2, b=4)
    ((1,2),Keywords(a=3, b=4),0)

    julia> g(1, a=3, 2, b=4, x=7)
    ((1,2),Keywords(a=3, b=4, x=7),7)

Internally,

    function g(kw::Keywords, a, b, x=0)
        ...
    end

get converted to

    function g(kw::Keywords, a, b)
        x = get(kw, :x, 0)
        ...
    end

Methods lacking the `::Keywords` catch-all only accept their specific
keywords:

    julia> h(args..., x=0) = (args, x)
    # method added to generic function h

    julia> h(1, 2, x=7)
    ((1,2),7)

    julia> h(1, a=3, 2, x=7)
    ERROR: unrecognized keyword a
     in h at no file
also define a no-keyword fallback method for closed keyword functions
allow type assertions in keywords arguments
another stab at keyword args, built on ordinary varargs
support simultaneous use of keywords and varargs
fix behavior of keyword args with declared types
add tests for keyword args
add lots of comments
classify object allocations as pure if their arguments are
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
some cleanup, and make NKeywords an immutable struct
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
parse calls f(a,b,c=1;d=2,r...) as
  (call f (keywords (= c 1))
        (parameters (= d 2) (... r))
        a b)
which supplies enough info for both calls and definitions

lowering for optional positional arguments
  need to be careful to handle default expressions that depend on other
  arguments. also need to remove static parameters for missing args.

lower keyword calls to kwcall(f, (kwargs...), args...)
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs
update keyword sorters to evaluate default expressions lazily, and
handle rest keywords
Merge branch 'master' of github.com:JuliaLang/julia into jb/kwargs