Bump version to 0.0.11
Check undefined instead of exists

If you change a field to be "", it will fail the
`if (field)` test.  Instead use _.isUndefined() to
see if the variable is specified in the json sent
by the client.

Fixes #141.
Use `find` instead of `like`

Like has an issue where it adds % modifiers on each
side.  Due to this bug in waterline, use find instead.
Luckily find is case insensitive in waterline, so it
operates the same as like without any matching
operators.

Fixes #142
Remove username from profile view

The username is no longer a primary key because
email address is used instead.

Fixes #143.
Check email address before adding

Only allow email addresses that aren't already
registered, or are registered by another user.

Provide appropriate error messages.
Allow login with any valid email

If you have multiple email addresses associated
with your account, you can now log in with any of
your emails.  This functionality existed before,
but there was a bug in the logic in `utils/user.js`
which is now fixed (user > userEmail)

Fixes #146.
Only show linked accounts in profile

Only show the accounts configured for OAuth in
`login.json` when showing a profile.  If no
OAuth providers are configured, eliminate the
linked providers section to prevent confusion.

Partially fixes #144.
Fix callback URLs

This completes #114.  Redirects you back to your
profile edit page too.
Use markdown for long text areas

You can now use markdown syntax for project descriptions,
opportunity descriptions, and profile bios.

The markdown syntax is based on marked, which support
GitHub Flavored Markdown (GFM).

There is no interactive editor in this commit; only the
rendering of what's stored in the DB into rendered HTML
assuming GFM input.

Partially implements #147.
Fix modal whitespace and comment syntax

Convert tabs to spaces; use javadoc style comments.
Add MarkdownEditor component

The MarkdownEditor implements an editor that can be
used as a component to add a rich text editor to any
textarea component.  The MarkdownEditor shows basic
editor controls, help, and includes preview functionality.

Here's the documentation for the MarkdownEditor component
as Javadoc.

/**
 * This component implements a Markdown TextEditor that can be
 * dropped into anywhere on an existing form.
 * Initialize the MarkdownEditor with an element `el`,
 * and the `id` of the textarea (so you can retreive its
 * value when the user submits the form.)
 *
 * Options:
 *   el: HTML element to fill - required
 *   id: HTML ID for the <textarea> element - required
 *   data: Default data for the textarea - required
 *   maxlength: Maximum characters for the text area - optional
 *   rows: Number of rows in the textarea - optional
 *   validation: List of strings for the data-validate attribute
 *     - optional
 *     example: ['empty', 'count400']
 */
Update styling for preview

Add bars on top and bottom to deliniate which
part is the preview area.
Prevent repeated markdown

In the event that markdown is already inserted for the
selected syntax, don't let it be inserted again.
For example, if text is selected in **text**, don't
insert another set of ** markdown syntax.  That would
just be wrong.

Add some additional comments.
Cleanup markdowneditor

It is always good to clean up after ourselves.
Make ESC key work for modals

Turns out that you have to add `tabindex="-1"` to the modal
div if you want the ESC key to work.  I don't know why this
hack works, but here's the GitHub issue that tracks it
in bootstrap:
https://github.com/twbs/bootstrap/issues/4854

The problem with how we are using modals is that
modal_wizard relied on an existing modal div to exist,
whereas regular modal did not.  This is legacy from an
old developer, and needed to be normalized.  Now, you
pass the container div as the `el` and an `id` for the
modal, just like you do with regular modals.

This ensures that the modal HTML is always generated by
modal or modal_wizard, and eliminates writing that HTML
in multiple places which results in bugs or differences
in code.  Consistency is the key.

This resolves #148.
Add placeholder option

MarkdownEditor can now take a placeholder option, which
will set the `placeholder` attribute of the <textarea>
element.
Launch markdown links in new tab/window

Since these are providing reference, open them in
a new window so the user can switch back and forth if
they'd like.
Add markdown editor to all descriptions

Profile Edit, Project Edit, and Opportunity Edit
all use MarkdownEditor now.  New Project and
New Opportunity also use MarkdownEditor.

This resolves #147.

Happy Markdown-ing!
Remote X-Powered-By header

This can be used for automated attacks based on known
vulnerabilities.  Have nginx strip this from the
headers returned to the client.
Merge markdown editor to sprint11

Merge branch 'sprint11-feature-markdown' into sprint11