Add `alt` attribute to the logo picture
Remove build dependency on `grunt-wrap`

The file wrapping functionality we need is already provided, in a more
powerful way, by `grunt-contrib-copy` and its `process` option.
Merge Grunt config files in a per-target basis

This will allow the user to add new targets or patch an existing one
(by using a config function, calling `grunt.config` and returning an
empty object).
Replace the server script with a Grunt task

Run `grunt connect:<target>` to launch the server, where `<target>` is
either `development` or `production`.

Custom port and host can be set in `grunt/userconfig/connect.ls`:

    module.exports = (grunt) ->
      grunt.config.set 'connect.options.port' 8080
      grunt.config.set 'connect.options.hostname' 'localhost'
      return {}
Reorganize the grunt task config files

Targets are now distributed among “stage” folders and build tasks are
automatically generated for each stage.  New targets can be added to
each stage with no need for indexing elsewhere.

Each stage builds on the previous one, in the following order:
- `prepare`: place dependencies in the target directories
- `build`: compile the source files
- `optimize`: concatenate and minify the built files and dependencies
- `deploy`: tasks used for actual deployment in production

New task aliases were added, that build the requested stages and run
a Connect web server to test the build after the `build` and `optimize`
stages.
Don't reload marker styles on a `storage` event

Doing so is useless as the event only notifies of changes triggered by
other windows, and does not necessarily cover the original scenario
of live-reloading after an user-made change through a JS console.
Add support for overlay layers in `localStorage`

Overlays can now be specified by the user through the `overlay providers`
setting.  Provider IDs are whitespace-separated.  Make sure there is no
whitespace around the IDs.
Add the PicoModal library to the project
Add modals for app info and settings
Keep modals' contents available in the DOM

The content nodes will be automatically moved when reinserted into
the DOM and they can be unhidden after the modal has been created.
Keeping them available allows other modules to interact with it
before the modals are shown.
Implement the functionality of the settings modal
Get the project's version for the about modal

For this, a new multi task `build-id` was written to get git's `HEAD` id
and turn it into a SemVer-compliant version, resorting to reading
`package.json` if git isn't available.  While we were at it, the `publish`
task was rewritten to not use `grunt-gh-pages`'s internal git functions,
calling `grunt.util.spawn` directly.
Make the versioned `index.html` available at build stage

This fixes the discrepancy of the file being created at said stage but
only used in the optimization stage.
:lipstick: Small changes in the modals

- Open all external links in a new window
- Note about the settings' storage location and reload requirement
- Fix a typo in the about modal
:lipstick: Position messages in the middle of the message bar
Warn about inexistent providers in the settings

The message will be displayed during map initialization, but will not
hamper the process itself.
Fix the modals' width on IE

Their width was set too small as PicoModal couldn't access the
CSS-defined width at the time of its calculation.  Giving an
explicit width fixes this and allows it to calculate the margins
correctly too.
Run Leaflet's build system from within Grunt

This avoids the need of having Jake in the PATH before running
`grunt builddeps`.
Update dependencies
Ignore dirty Leaflet worktree

The dirtiness is cause by our custom build of it and is safe to ignore,
as long as the build is updated with the module itself.