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
First take on new design of linalg
another stab at keyword args, built on ordinary varargs
New structure without MATLAB compatibility
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' into anj/linalg2
Create a base/linalg directory for all the linear algebra code.
Refactor dense.jl and move special matrices into different files.
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' into anj/linalg2

Conflicts:
	base/deprecated.jl
Put factorizations into their own file.
BunchKaufman factorizations are in a separate file.
Move arpack from extras into base/linalg
Merge branch 'master' into anj/linalg2
Move suitesparse.jl from extras to base/linalg