Add markdown insertLink and insertIMG functions
Create lightweight markdown editor from scratch

Code cleanup.

First pass at implementing @aron's mockups.

Fix bugs, breakout markdown into its own directive

Forgot to add markdown.coffee
Add checks to see if markup has already been inserted
Fix bugs by getting rid of a bad idea. Tighten up styles.
Add ngDoc documentation to markdown.coffee
Rebase to latest master, and implement some of Aron's suggestions.
Icomoon Cleanup. Delete unused icons.
Implemented more of Aron's suggestions.
Reorganized CSS, minor changes to documentation.
Rename things, fix embarassing spelling error.
Rename returnSelection() to userSelection(), remove unneeded parentheses, fix spelling error
Rename variables

Went with Aron's suggestion of suffixing raw nodes with 'El,' and got rid of the
variable 'ourIframeSelection' as it has nothing to do with iframes and the code
could be written without the need for that variable.

input -> inputEl
textarea -> input
Break out markdown styles into separate stylesheet
Remove $window dependency in markdown directive

Covert px values in markdown-editor.scss to use em. Note: I did this for all values except min-height on .markdown-preview which for some strange reason caused a weird flicker in Firefox.

Add 'markdown-' namespace to .preview and .preview-toggle classes.

Unnested CSS in markdown-editor.scss. Everything is well namespaced now so this is no longer necessary.

Apply consistent sentence case to the title attributes of the markdown tools.
Break up long lines of code over multiple lines
Merge pull request #1479 from hypothesis/markdown

Introduce zero-dependency Markdown Editor.
Rework application bootstrap

The embed code has for some time been the place where our application
is bootstrapped. When we did the epub.js integration, we added query
parameters to the embed.js view to control which plugins were loaded
by each instance of the application (a widget host for the reader frame
and a slimmer guest annotator for the chapter frames).

Change the injection bundle to instead include a separate bootstrap
script. This has the nice benefit of ensuring that while we still use
yepnope or a similar technique for script injection that our bootstrap
code runs in the same global context as the application dependencies
whether or not the embed script is run in a normal context or a Chrome
extension content script context. The need for an inline script created
by the embed code is no longer, since it is a separate script fetched
from the server (it's bundled in production, inside the monolithic
hypothesis-assets.js).

Instead of passing the URI of the sidebar iframe by templating the
bootstrap script, the embed script adds a link tag to the page with
``rel=sidebar`` and ``type=application/annotator+html``, which the
bootstrap script looks for. This pattern fits nicely with the existing
role of ``rel=sidebar`` in Firefox and Opera and nicely decouples the
embeding and the bootstrapping.

Further customization that used to take place in the query parameters
is now done through ``window.hypothesisRole``, which can specify an
alternate constructor, and ``window.hypothesisConfig``, which can be
a function to configure the options passed to the constructor. This
function will be useful for Single Sign On options, too, as laid out
in #1437.

The destroy script from the Chrome extension is put alongside the new
bootstrap script, as they complement one another and are not extension
specific.
Check types of user provided functions in bootstrap
Update the README around custom instantiation
Merge pull request #1524 from hypothesis/isolate-bootstrap-js

Rework application bootstrap.