Removes config.theme and restructures how theme variables are cached

resolves #1789

- removes config/theme.js
- moves caching of theme variables to api/settings.js which is where the
rest of the settings cache occurs.  this removes the requirement of having
to push changes to cache, now it simply occurs alongside when settings
are changed.
- updates relevant tests.
update CodeMirror
Moves storage module to use prototypes for inheritance and structure.

addresses #2852

- Moves storage modules to use prototypes and to create prototypes
that inherit from the base storage ctor.

- Makes storage/base conform to an all Promise interface.
Fix ::selection bug

No issue

Fixes a weird issue where text would overlap other text.
Fix URL replacement in RSS feed mucking with content

closes #3983
- removed naive regex implementation
- added cheerio to project dependencies
- used cheerio to parse RSS content
- use attribute getter/setter to replace href/src attribute urls with the resolved version
Merge pull request #4022 from kminiatures/master

update CodeMirror 4.5.0
Merge pull request #3948 from hswolff/refactor-storage-module

Moves storage module to use prototypes for inheritance and structure.
Merge pull request #4029 from PaulAdamDavis/fix-text-selection-bug

Fix ::selection bug
Static nanoscroller integration

References #1892

A static integration of https://github.com/jamesflorentino/nanoScrollerJS  

This is WIP with the goal of getting feedback on and deciding how we should integrate this into Ghost.
Fix editor scroll depending on cursor location

Closes #4027
Properly align word-count

no ref
- Re-adds word-count styles
Fix Markdown help modal table positioning

no ref
- Fix top spacing of markdown table
- Fix width of table and left align table head
- Fix grammar, whitespace in getting-started post
Merge pull request #4035 from halfdan/word-count

Properly align word-count
Merge pull request #4034 from novaugust/iss4027

Fix editor scroll depending on cursor location
Fixes the first run messages

no issue

- Whilst testing the mail PR #3915 I noticed the first run messages aren't
  appearing because the dbHash is getting pre-populated, but there doesn't
  appear to be a reason why this is necessary
Merge pull request #4015 from PaulAdamDavis/nano-scrollbars

[WIP] Nanoscroller integration
Minor tweaks to new scrollbar appearance and animations
Merge pull request #4005 from ErisDS/dbhash-first-run

Fixes the first run messages
Merge pull request #4025 from mvalipour/master

URL replacement in RSS feed mucks with content
Merge pull request #3947 from hswolff/goodbye-config-theme

Removes config.theme and restructures how theme variables are cached