Add --use-submodules option to `carthage checkout`

Resolves #56.

**To do:**

 - [x] ~~Skip recursive cloning for non-submoduled dependencies that live in `Carthage.checkout` (i.e., smartly omit Carthage-managed submodules from normal recursive checkouts)~~
 - [x] Honor submodules already present with `carthage checkout`

/cc @mdiep 
Not all of the type annotations in the code are necessary, but sometimes it makes error reporting way better. The style is inconsistent, but practical.