Add middleware concept for addons.

* Refactors express server to explicitly start the http server. This was
  what it does naturally, but we need access to the raw server to be
  able to teardown the server between tests.
* Refactor express server to make it a bit more testable.
* Add `addon.serverMiddleware` callback function.  The addon is called
  with the instance of the express app.
* Refactor `api-stub` blueprint (and expected API) so that the express
  app is started in a consistent way. Prior to this, if you had a
  `./server/` folder, your code would create the `express` app add the
  `ember-cli` middleware.

Closes #1086.
To confirm that an addon that does not implement a serverMiddleware method does not throw an error.