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
Removing hard-coded port number

closes #1391
Merge pull request #3851 from ErisDS/issue-1391

Removing hard-coded port number
Merge pull request #3815 from JoshWillik/extract-init

Extract the starting functionality into an exported class.
Added correct contextual Meta Titles and Descriptions

closes #2462

- adds conditionals for pagination for index, tags and author pages
- outputs correct meta title and description according to context
- adds further unit testing
Replace the when promise library with bluebird.

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

Replace when with bluebird
Fix mobile settings menu transitions with new GUI

Ref #3810
Adjust setup and teardown of route tests.

Closes #3856
- No longer call clearData and initData in test setup because
  migration.init is run during Ghost startup.  The unhandled
  error was a result of clearData removing all the tables while
  Ghost was running--there was a timing issue with the oauth middleware
  checking the refreshtokens table when it had just been deleted.
Merge pull request #3862 from novaugust/settings-menu-gui-update

Fix mobile settings menu transitions with new GUI
Merge pull request #3863 from jaswilli/issue-3856

Adjust setup and teardown of route tests.
Merge pull request #3861 from cobbspur/metas

Added correct contextual Meta Titles and Descriptions
adding config flags to control all items mentioned in PRIVACY.md

closes #3241
- in config.js, the `tinfoil` attribute holds all privacy-related flags
- `tinfoil: true` disables everything (equivalent to setting all flags to false)
- updating config.example.js with commented-out flags and description