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

#193, retargeted to `0.4-development`.

Resolves #100.
Since the tests will quickly tell us if they're broken, I don't think it's a big deal. I agree with that idiom for the main body of code, though.