Closes issue #115

Accommodate sources generated by `git archive --format=.tar.gz`
Merge pull request #116 from taqtiqa-mark/patch-1

Closes issue #115
Prefer accessor writers to ivars.
Detect conflicts faster in the resolver.

This adds an initial check in the recursive resolution process that fails the resolve early if there are any dependencies in the queue that conflict with any of the already-resolved manifests.

These same conflicts would have been detected anyway, when actually attempting to resolve these dependencies in the queue, but we are just detecting them earlier.
It's polite not to modify the arguments passed into a method.

And if the arguments will not be modified, it's polite to make that clear up-front.
Partially linearize the resolver implementation.

This makes the implementation somewhat clearer because it isn't as deeply-nested as before.
Give the resolver's multisource a basic string rep.

The --verbose log was getting filled with gibberish from its default string rep from Object#to_s.
We only need one copy of the multisource instance.
Partially linearize the resolver implementation.

This makes the implementation somewhat clearer because some of the nesting is moved into a helper method.
Move some scope work into a helper method in the resolver impl.
Only mark as being scheduled deps which are unresolved.

If there's a manifest attached, we don't need to show it as being scheduled.
Move some scope work into a helper method in the resolver impl.
Whitespace.
Move some printf-debugging into a helper method in the resolver impl.
Rearrange marking dependencies as scheduled in the resolver impl.

The queued dependencies will only actually be scheduled after some additional checks pass, so mark them as scheduled only after the checks pass.
Pull part of a complex block of code up and out.
Partially linearize the resolver implementation.

This makes the implementation somewhat clearer because some of the nesting is moved into a helper method.
Partially linearize the resolver implementation.

This makes the implementation somewhat clearer.
Remove unnecessary code.

This #dup is unnecessary because the first thing the called method does is perform the same #dup.
Partially linearize the resolver implementation.

This makes the implementation somewhat clearer because some of the nesting is moved into a helper method.