Merge tag 'v2.3.1'

2.3.1
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:

        {
          "routes:before": {
            "morgan": {
              "params": ["dev"]
            }
          },
          "routes": {
            "loopback/server/middleware/rest": {
            }
          },
          "subapps": {
            "./adminer": {
            },
          }
        }

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

It is also possible to mount the same middleware in the same phase
multiple times with different configuration.

Example config:

    {
      "auth": {
        "oauth2": [
          {
            "params": "first"
          },
          {
            "params": "second"
          }
        ]
      },
    });
Merge pull request #66 from strongloop/feature/middleware-mounting

Load middleware and phases from `middleware.json`
Implement shorthand notation for middleware paths

When the middleware name (path) is in the format {module}#{filename},
loopback-boot resolves the path by trying multiple locations and
using the first one that exists:

 - {module} and check the {filename} property of the exports
     -> e.g. loopback.rest
- {module}/server/middleware/{filename}
    -> e.g. loopback/server/middleware/rest
 - {module}/middleware/{filename}
    -> e.g. loopback/middleware/rest

Values in any other format will bypass this resolution algorithm and
they will be used in the original form:

 - a full path in a module: loopback/server/middleware/rest
 - a relative path: ./middleware/custom, ./custom, ../logger
 - an absolute path: /usr/local/lib/node_modules/compression
Merge pull request #70 from strongloop/feature/short-middleware-paths

#68 - Implement shorthand notation for middleware paths
v2.4.0
Merge branch 'release/2.4.0' into production