Initial implementation

Move `app.boot()` and its tests from loopback.

Fix jshint warnings.

Clean up unit tests - remove dependency on global variables created
by loopback's test/support.js

/to @ritch please review. 

I did not get rid of `loopback.autoAttach()` in this pull request, as it requires more changes.

`loopback` is kept as a peer dependency so that we `require('loopback')` works. Once we get rid of `loopback.autoAttach`, we should be able to remove that peer dependency too. Possibly use runtime version check instead.