expand the contexts that are considered "top level". fixes #3905

top level context now extends within begin blocks, if statements, etc.
as long as no new variable scopes are introduced. this allows conditional
"using" statements and so on at the top level, so we don't need usingmodule().

of course, introducing new variables can implicitly wrap expressions so
they become non-top-level. for example:

    # top level
    begin
        s = 0
        using Foo
    end

    # NOT top level
    begin
        local s = 0
        using Foo  # error
    end
Merge branch 'master' of github.com:JuliaLang/julia