Simplify the definition of defer() functions.

Before: you had to pass in the config object:

    before: defer(function (cfg) {
      return "Welcome to  "+cfg.siteTitle;
    }),

After: 'this' is now bound to the main config object, so it doesn't have to be passed in:

    after: defer(function () {
      return "Welcome to  "+this.siteTitle;
    }),

For backwards-compatibility, the config object is also still passed in as an argument.
(Although it's unlikely that anyone started using this feature, since it has only been
for a few hours, and not well-documented for most of that time).
Make require('config/defer') syntax work

I had presumed this worked before, it is difficult to test this from inside of the project itself.
Manual testing from outside the project tree confirmed that part of the parth after the "/" resolved
relative to the "config" directory where this package is stored, not the lib/ directory where config.js
is stored.
Add test coverage for various array merging cases.

While there are still more array merge cases that could be covered, from
the coverage so far it appears that new arrays completely replace old arrays.
Bump dependency on cson package.

        It appeared that the old cson dep was causing Travis builds to fail.
Merge pull request #169 from markstos/bump-cson-dep

Bump cson dep to try to fix travis builds.