Extend Cartfile syntax to support pinning to arbitrary branches/tags/commits

#193, retargeted to `0.4-development`.

Resolves #100.
I have recently been preferring `x ?? y` to `x!` for this sort of idiom, but that is mostly in the context of rapidly-changing API which sometimes got broken and crashed the tests.