Improve Gruntfile

1. Standardize formatting of arrays and objects
    - Fixes formatting inconsistencies in the Gruntfile. Now arrays and objects
    are:
    single_space: after_colon,
    One value: [single_line],
    Multiple values: [
      multiple,
      lines
    ]

2. Use load-grunt-tasks to... load grunt tasks!
    - Sindre wrote a nice plugin that is used widely in the Yeoman and Grunt
    communities to load tasks in a cleaner fashion than matchdep.
    - Moves loading tasks to the top near our other require statements.
    - Since we're asking users to run `npm install` there should be no need to check
    if a package is installed or not. If the project is installed as a dependency
    all of the required packages will be installed as well.

3. Fix config-all.json formatting
    - Running `grunt test` reformats the config-all file, leaving your working
    directory dirty. Committing the reformatted file so that running a test task
    doesn't impact the repo at all :).

4. Move jshint before build
    - It's convention to jshint source files before you build, so that if there are
    glaring jshint errors your build won't complete.

5. Rename clean targets to be more descriptive

6. Revise the readme to ask people to run all tests (jshint, qunit, and nodeunit)
add unicode-range test
Remove unused files

The following files are unreferenced and unused:

- lib/generate-init.js
  Looks like the last reference to this file was removed in 2012 in
  ff031ef330962e0639776b852db8809ea81907c8

- lib/app.build.js and optomist library
  The only references to them are the initial commit
  541af0bd473ffe154557b5f978ad25c2b1c4c38
  this moving of the file:
  16ad49aa670fa1207f873beb0069c5575be77485
  and this cleanup that says "I don't know what this file is for":
  2906bc78cf765e7b91fc00dc5de109265aa50d09

- lib/processbuild.js
  There are no references to processbuild.js in the current codebase. The last
  references to it are moving the file in Feb 2013:
  16ad49aa670fa1207f873beb0069c5575be77485
  and linting the file:
  ab90b7b2757dfeabe31473d18f92ce707dc88555
Refactor build system

OK, this is a huge commit. I have it broken down into smaller commits if that
would fit with the VC strategy better.

NOTE: This revises the API and breaks testing with the Gruntfile right now. Will
fix and squash commits, but want to get feedback first.

- The node module no longer writes directly to the file system, but instead
  exposes an output string in a callback. The new CLI outputs a file.
- Moves Grunt to a dev dependency and builds a custom Modernizr file
  in memory, without writing interstital steps to disk. This is safer, lighter,
  and gets rid of Grunt inception.
- All build system code is in lib/, and used node.js/common.js style module
  loading.
- All Modernizr code is in feature-detects/ and src/, and uses require.js style
  module loading.
- All files used only by tests are moved to test/
- Impliment a real CLI using npm's bin param.
- Adds consistant code comments.
- Revises and adds new docs to readme.md:
  - Adds usage docs
  - Removes cruft docs for other repositories
  - Adds contributing docs, moves test section inside of it

- Minor optimizations:
  - Switch build system to native V8 functions where possible
  - Improve r.js settings
  - Name exported functions to givenicer stack traces in case of error
  - Normalize code syntax and spacing
  - Renames files for maximum pattern following
  - Cleans up .gitignore
  - Fixes .editorconfig for markdown
Revise the gruntfile to work with new build system

- No tasks use grunt watch, no docs mention it, so remove it
- Remove unneeded clean targets
- Remove unused meta config object
- Make jshint test test/api
- Refine jshint to work with tests and lib, remove uneeded config
  - curly: all of Modernizr's code uses {}, not needed
  - evil: No eval statements in Modernizr's source, not needed
  - laxcomma: Only existed in unit-caniuse.js, so fixed there and removed.
  - newcap: No class based issues in Modernizr, not needed.
  - smarttabs: Editorconfig enforces indent_style = space, so this rule is
    contrary to our other code normalization tool. Removed.
- Remove jshint node: true comments in lib and test because we're defining that
  in the gruntfile. NOTE: there are still a few files with jshint error
  suppression comments in them.
Improve test coverage for new build system