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