Fix Implicitly Unwrapped nil value error in `XcodeSpec` using Optional NSString

<i>Related to #206</i>
<i>Refactor of #209</i>

When running `otool` in `XcodeSpec`, [the `value` of the `first` of the stream is implicitly unwrapped](https://github.com/Carthage/Carthage/blob/9368c474f195c91ac7d4b5c1ee3150bacec67f36/CarthageKitTests/XcodeSpec.swift#L74-77).

But, if `otool` hits an error, then `first()` returns a `.Failure`, whose `value()` returns `nil`, leading to `fatal error: unexpectedly found nil while unwrapping an Optional value`.
> it just seems disingenuous to me to not examine the actual result, but rather an empty string of our own volition

There’s no question that it’s a bit of a hack to work around the immediate issue. The intermediate fix would be for `Nimble` to allow expectations on `T?` precisely where `contain` can apply and to fail them if the subject is `nil`. The _real_ fix would be for Swift to know how to distribute operations over optionals correctly, but I’m not exactly holding my breath.

I’m not concerned about the size of the diff, but rather the clarity of the resulting code. The `if` statement is a distraction from the point of the test—“these architectures ought to be represented”—to an implementation detail—“this value can be `nil` in the event of failures _unrelated to the specific subject of the test_.”

I feel similarly about the type annotations. We’re testing against strings; it’s launching a task; I can ⌥-click if I’m uncertain. The type annotation lends it visibility disproportionate to its actual significance, making it imply that it is non-obvious that it would be a string, which makes me think the code is actually extremely subtle *or* that the compiler forced our hand, neither of which are apparently the case.

Shadowing variables with the same name is idiomatic, so I take no issue with that.

> I don't feel dogmatic about any of these decisions, but, at least as a first step, I feel this pull is safe, correct, and relatively clear.

I agree! I think `… ?? ""` would be (relatively) clearer, however. IMO this has become a reasonable idiom for these cases; IIRC it’s employed in LlamaKit’s tests, for example.

@Carthage/carthage anybody have any opinions one way or the other here?