Move all grammars that use Git repos to submodules

This makes it so we don't have to redownload all the grammars every time
we build the grammars gem. It will also let us verify that grammars.yml
is accurate in the future by checking it against the submodules on disk.

script/bootstrap now updates the submodules.
Sort grammars.yml
Update grammars.yml

This is just the result of running script/download-grammars.
Test that grammars.yml agrees with the list of submodules

If any submodules are missing from grammars.yml, or are listed in
grammars.yml but missing from the repo, the test will fail.

Eventually it would be good to test that the scopes for each submodule
are accurate, but that will take some more work.
Suggest running script/bootstrap before building gems

This ensures all our submodules are up to date as well.
Update submodules in parallel to speed up bootstrap

This runs 8 `git submodule update` processes in parallel, speeding up
bootstrap from 2 minutes to 30 seconds for me. (Obviously this is
dependent on bandwidth.)
Initialize submodules before updating them

Initialization cannot happen in parallel because every submodule has to
get written to .git/config.
Suggest adding/removing submodules from the repo
Move grammar sources to vendor/grammars
Sort grammars.yml
Set tracking branches for submodules that aren't tracking master

This will let us use `git submodule update --remote` to update the
submodules to the latest commit from the relevant branch.
Use fast-submodule-update in CI

Hopefully this will speed up CI builds.
Don't use question marks in struct fields

Apparently it doesn't work in Ruby 1.9.
Init submodules in CI
Merge pull request #1896 from github/grammar-submodules

Move all grammars that use Git repos to submodules
Grammar for WebIDL
Merge pull request #1920 from pchaigno/webidl-grammar

Grammar for WebIDL