Add .editorconfig

EditorConfig is cross-IDE whitespace configuration.

See more at http://editorconfig.org/
Restructure plugin with more private methods

- Move helper functions to private methods.
- Simplify a lot of functions and function arguments.
- Use this.map and this.getMap() instead of this.options.mapObj
- Remove requireInit option
- Remove initCallback code.
- Fix a bunch of jshint warnings.
Move setmap.js to lib/ folder
Introduce Grunt as a build system

Using a maintainable Gruntfile: http://www.thomasboyt.com/2013/09/01/maintainable-grunt.html

Watch, minify and lint JavaScript using Grunt and its tasks.

Using npm for dev dependencies.

Using JSLint for linting.

Using JSCS for code style.

Using Uglify for minifying.