Add a script that takes a yaml file and converts it to a JSON file

Requires PyYAML. If this dependency is an issue on a particular
platform, pretty much any language allows you to do this.

A ruby example is

    ruby -ryaml -rjson -e 'puts JSON.pretty_generate(YAML.load(ARGF))' < project.yml > project.json
Convert the MML file from JSON to YAML

This one-time conversion was done with the json2yaml node module,
and then substantially reformatted by hand, using mappings and alias
to avoid repeating projection and extents information for each layer,
and to get consistent ordering of the properties of each layer. The
latter does not matter semantically, but makes editing with a text
editor cleaner.

By using the scripts/yaml2mml.py script, the YAML can be converted
back into JSON, which is still what TileMill uses.

A JSON-aware diff of the original project.mml and the new generated
one shows that the only differences are the new "_parts" property,
used for aliases and ignored by TileMill, and layer extents.

The script can be invoked with

    scripts/yaml2mml.py < project.yaml > project.mml

The project.mml file remains checked in to git, as TileMill requires
it and this allows someone to clone the repo, and immediately have
it work. Merge conflicts in project.mml are trivial to solve, as
the entire file is just regenerated by running the script again.

This does mean that the .MML file should not be edited directly,
but this is fine, as editing the JSON by hand is extremely difficult
anyways! The HOT OSM style has a similar workflow, making use of cartocc.
Use alias to avoid duplicating SQL connection information

By using aliases, we can avoid having to specify the same information
repeatedly, saving lines, avoiding mistakes, and making it easier to
use a differently named database.

The last is evident in that the landcover extents changed slightly
in this, because they were different than all the other layers.
Conver SQL from in-line escaped scalars to block scalars

Block scalars allow you to use newlines, and are far more readable

This commit also catches some extents that were missed previously.
Clean up SQL in the YAML file

A lot of the SQL was badly formatted, with random tabs, caps, and
lines of 5000 characters. This commit cleans up about half of them
but is not complete.
Add documentation on YAML and SQL to CONTRIBUTING.md
Add PyYAML to dependencies, but only if editing the MML file
Fix typo and missed caps/quotes
Whitespace fixes
More caps fixes
Merge branch 'yaml' of https://github.com/pnorman/openstreetmap-carto into pnorman-yaml
Resync with yaml.
Merge branch 'pnorman-yaml'
Rephrase some yaml-related information.
Use single backticks for inline code unless the code itself contains backticks
Layout changes SQL
Reinstate oneway arrows on non-road highways

* Resolves #917
* Resolves #584
* Resolves #912