Sync

Switches carto to use a synchronous API (no callbacks) since it does no IO.

Improves error handling situation like this one in master where some errors are thrown and others are passed via the callback (https://github.com/mapbox/carto/blob/master/lib/carto/renderer.js#L98-L100). Now all errors should be caught using try/catch.

cc @springmeyer @tmcw

### Before merge

- [x] Add tests for carto bin, ~~maybe switch to minimist while I'm here~~ **NEXT TIME!**
- [x] Quick test in tm2 context
- [ ] 0.11.0