Some cleanup

- Use `case` to simplify command parsing in `bin/carton`
- Properly quote all variables in `bin/carton`
- Use environment variables to pass command and project path from
  `bin/carton` to `carton.el` to deal with the (admittedly unlikely)
  case that someone has a quotation mark in his directory name.  This
  also shortens the corresponding part of `bin/carton`, making it easier
  to read.  Also, the less bash script, the better ;)

I originally did this because I wanted to add a new `sync` command that would remove packages, that were removed from `Carton`, and install packages added to it.

However, I got stuck on this, because there is no way to tell why an installed package is not in `Carton`.  It may have been removed, but it may just as well only be a dependency of a package in `Carton`.

Instead, I am now thinking about a `reinstall` command that removes all installed packages, and re-installs them.  It's mainly intended for the `~/.emacs.d` use case, to keep your packages in sync with what is contained in `Carton`, especially when syncing `~/.emacs.d` across multiple systems.

Would you be interested in this?