Modal: inital commit of modal plugin

1. Uses Magnific Popup to create modal dialogs.
2. Plugin can be used to show/hide dialogs with `show.wb-modal`
   and `hide.wb-modal` events.
3. Plugin will also build and return dialogs with `build.wb-modal`
   (supports $.Deferred and return of new dialog).
Session: converted to use modal plugin

All modal building and showing logic was moved into
the new modal plugin.
Merge pull request #3242 from patheard/modal

Modal plugin initial commit