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.
Replaces sendmail with direct

Closes #1538
* rips out sendmail
* adds direct
* updates nodemailer to 0.7.1
* changes unit tests for mail
* changed integration tests for mail
* adds mail api tests
Fix modal positioning

Closes #4008

- Adds a `.modal` class which extends `%modal` - it disappeared with the migration to Libsass
Emberify Posts mobile transitions

Closes #3950

- Fixed up event attachment and removal in a few mixins
- Renamed content-list-content-view to something more understandable
- simplify transition from posts.index to posts.post
Fix notification position when PSM is open

Closes #4006

- Adds a transition to the notification containers
- Adjusts the position of bottom notifications when PSM is open
Merge pull request #4009 from PaulAdamDavis/fix-modals

Fix modal positioning
Snap page transition for mobile settings

References #3810

- Disables the `.fade-in` animation for settings page transitions on mobile
Merge pull request #4012 from PaulAdamDavis/no-mob-setting-transitions

Snap page transition for mobile settings
Add icons to settings nav menu

References #3810

- Re-adds the icons for each item of the settings nav and related styles

I've opted to go with adding `.icon-users` classes instead of setting them in the Sass.
Merge pull request #4011 from PaulAdamDavis/fix-notifications

Fix notification position when PSM is open
Merge pull request #4013 from PaulAdamDavis/settings-nav-icons

Add icons to settings nav menu
Change class for editor PSM closing transparent div

No issue

- Changes the class used by the transparent div used to close the PSM

Without this change, when in the editor and the nav is open, the transparent div here is above the div the nav is looking for. So, the div for the PSM is clicked, rather than the nav div.
Merge pull request #3915 from javorszky/iss1538b

Replaces sendmail with direct
update CodeMirror
Merge pull request #3999 from novaugust/emberify-posts-c-and-v

Emberify Posts mobile transitions
Merge pull request #4014 from PaulAdamDavis/fix-mobile-nav-click

Change class for editor PSM closing transparent div
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