Extract starting functionality into an exported class

closes #3789
- Create a GhostServer class to manage state
- index.js now calls start on the exported server
- Alter tests to expect a GhostServer instance
Merge pull request #3815 from JoshWillik/extract-init

Extract the starting functionality into an exported class.
Replace the when promise library with bluebird.

Closes #968
Merge pull request #3826 from jaswilli/bluebird

Replace when with bluebird