Use `chai` instead of `must`

As of 1.10, chai supports nonary assertions, there are no more reasons
for using a different variant.
Clean up .jshintrc

jshint does not support `trailing` as of v1.5.0.

Remove `maxlen` too, jscs provides better implementation.

Fix definition of global mocha variables - mark them as immutable.
Add jscs style check, fix violations found
Merge pull request #67 from strongloop/feature/infrastructure-cleanup

Infrastructure cleanup
Load middleware and phases from `middleware.json`

Sample JSON:

    {
      "phases": ["routes"],
      "middleware": {
        "morgan": {
          "phase": "routes:before",
          "config": ["dev"]
        }
      }
    }

The JSON file can be customized using the usual conventions:
  - middleware.local.{js|json}
  - middleware.{env}.{js|json}
Refactor middleware.json

Change the format of `middleware.json`:
 - reduce number of keys and nesting
 - allow multiple instances of the same middleware

Sample:

        {
          "routes:before": {
            "morgan": {
              "config": ["dev"]
            }
          },
          "routes": {
            "loopback/server/middleware/rest" {
            }
          },
          "subapps": {
            "./adminer": {
            },
          }
        }
Support multiple instances of the same middleware

Allow the developer to mount the same middleware in the same phase
multiple times with different configuration.

Example config:

    {
      'auth': {
        'oauth2': [
          {
            args: 'first'
          },
          {
            args: 'second'
          }
        ]
      },
    });