Made `xsource` behave more module-like

Instead of polluting the global environment, `xsource` now sources its
file into a local environment (without parent). By default, it
additionally `attach`es this environment to the R object search path,
unless `attach = FALSE` is specified.
The local environment is also returned to the caller by `xsource`, and
overrides `::`, so that the following code works as expected:

    mod <- xsource(some.module)
    mod::x # assuming x exists in that object
Merge branch 'xsource' with better module support