#68 - 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}/{filename} - the path as supplied,
     -> e.g. loopback/rest
 - {module}/middleware/{filename}
    -> e.g. loopback/middleware/rest
 - {module}/server/middleware/{filename}
    -> e.g. loopback/server/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

Close #68

/to @ritch please review
/cc @raymondfeng 
I find it confusing that you build a list of candidates first (L424-L248) and then you ignore them and do `require(pathName)[fragment]` check instead.

Please reorder - start with L433-L438, build a list of candidates only if the first convention was not matched.