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.
adding config flags to control all items mentioned in PRIVACY.md

closes #3241
- in config.js, the `privacy` attribute holds all privacy-related flags
- `privacy.userTinfoil: true` disables everything (equivalent to setting all flags to false)
- added helper function to core/server/config/index.js to checking privacy flags
- added helper function to core/server/config/index.js to show warning about deprecated items
Merge pull request #3874 from morficus/issue-3241

adding config flags to control all items mentioned in PRIVACY.md
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