Fixed issue with adding multiple new tags to a post

Fixes #1907

Refactored `updateTags` to correct a loop issue where the `insert`
method was mistakingly being passed rather than `update`, triggering a
duplicate PK SQL error.
Update Contributing Docs to include Developer tips
Including theme partials in a way that supports symbolically linked directories

closes #1937
 - using fs.stat() instead of hasOwnProperty() to test for directory existence
Fix display update notification

closes #1932

- added showUpdateNotification with version check
- added temp workaround for boolean values in database
- changed default value from false to null
- updated tests
Enable Escape key to close tag suggestion popup

closes #1893
- Checking the contents of search term after evaluating the keycode caused the suggestion box to be hidden and immediately reshown
- Moving the if/else to the top of the function enables us to fix the issue without complicating the suggestion update logic
Prevent stacking of password mismatch notification on /reset/

closes #1902
- Missing call to clearEverything caused the new notifications to pile up on multiple failed submissions
Adding case-insensitive User.getByEmail method

fixes #1498

- emails are no longer converted to lowercase, local mailbox can validly
  be mixed case
- getByEmail uses JS to compare emails to ensure we can support unicode
- tests that users can be retrieved by their email address with case
  insensitivity
Fix posts.html and posts.markdown field type

closes #1947
- added fieldtype: medium for posts.html
- changed fieldtype: medium for posts.markdown
- added method to fix databases created with wrong field type
- added tests for database version 002
Show message and don't start if javascript files have not been built

fixes #1782
- added builtFilesExist function to check for files during startup.
  If built files do not exist Ghost startup is stopped and a link
  to the documentation is displayed.
- exported a scriptFiles object from server/helpers.
- added a builtScriptPath to the paths module.
- removed "js-msg" about missing javascript from the UI.
Show character limit below blog description textarea

closes #1970
Fix for session handling

closes #1978
- wait for async calls before callback()
General cleanup

- Cleanup some todos, comments, and unused variables
Prevent form field descriptions from becoming unwieldily long

Yes that’s a word. As of now.
Larger min-height for textareas, and size based on font size
Rename 'plugins' to 'apps'

Fixes #1988
Adding guard to meta_title

fixes #1992
Upgrade express-hbs, and switch to using registerPartial

fixes #1964, fixes #1975

 - Issues with partial handling which caused #1964  have been part fixed by handlebars, part worked around by express-hbs, we must use `registerPartials` to ensure partials are handled correctly.
 - Issue with error handling which caused #1975 has also been fixed in express-hbs, which now catches the error from handlebars and passes it to express so that we can handle the error with an error page.
Use absolute path when storing images

closes #1983
Start up safely when the activeTheme is not present

fixes #2000

- resolves errors when attempting to start Ghost without the active theme present
- the frontend will render a 500 error page safely
- issues with themes that have an error template are resolved separately in #2018
Catch errors when rendering the error template

fixes #1991

- if there's an error when rendering the error template, default to sending a plain response detailing both errors.