Abstract the allowed file types out of API

closes #1891
- Moves contentType and extension check to config
Fixed email copy grammatical errors
Sorts PSM authors alphabetically

fixes #4198
Merge pull request #4202 from iBotPeaches/issue_4198

Sorts PSM authors alphabetically
Merge pull request #4188 from halfdan/1891-move

Abstract the allowed file types out of API
Implements module tests

closes #2521
- Add new module tests
- Implements new `test-module` task to specifically run module tests
Merge pull request #4203 from halfdan/2521-module-test

Implements Ghost module tests
Fix flickering popover transitions

Closes #4138

- Removed JS animation to close in favour of CSS animations
Rename popovers to dropdowns
Merge pull request #4141 from PaulAdamDavis/fix-dropdown-flickering

Fix flickering dropdown animations
Merge pull request #4210 from JohnONolan/fix-copy

[WIP] Fixed email copy grammatical errors
refactor 'config' object to allow it to be initialized from a hash, including extracting content validations from file-reader
separate config info validations based on stand-alone versus middleware server
introduce new middleware module; drive out its initialization of the config object
w'ing-ip on refactor of Ghost boot to work for an embeddable express instance
supress doesn't-autostart-as-NPM-module warning when no server config ('grunt validate' broken due to earlier changes)
Clean up hanging promises left by middleware_spec
tidy comments and white-space on changes made to date
set paths.subdir from the blogApp.mountpath when configured as Express middleware