More ways to merge HotSignals; Update to carthage 0.4

Addresses #1647.

In terms of new functionality, this PR adds a `merge` overload to `ColdSignal` which merges a `ColdSignal` of `HotSignal`s, as well as the `merge(SequenceType)` class method and `mergeWith(HotSignal)` instance method to `HotSignal`, which are essentially conveniences for the former. And I added some tests to check that these work.

I've also updated the project to use the new Carthage 0.4 directory structure (mostly because I have 0.4 installed and I needed to build the project ¯\\\_(ツ)\_/¯ ). But this is all confined to 1 commit so I can easily revert it if we don't want to update yet.

I have a few small things that I'm unsure about here: 
- Whether the `merge(SequenceType)` class method should be considered a "Convenience constructor" or a "Method for combining multiple signals". I put it in the latter extension, but I could see the case being made for either.
- If `ColdSignal`'s `mergeMap() -> ColdSignal` would need to be changed now that there is an overload that returns a `HotSignal`. I suspect it will be, but I'm not sure what the best solution is.
- I made my best guess for the generics mumbo-jumbo in HotSignal.swift:573 but it doesn't feel exactly right.

And of course please do let me know if anything else doesn't look right!
Would a ColdSignal of HotSignals truly be a bad design choice, though? My thinking was that ColdSignal has this nice use as a replayable generator, and it makes sense to want a generator of HotSignals.

Say for example you wanted to build a live-updating list of stock prices. You'd have a bunch of HotSignals sending stock prices; maybe each is a wrapper around a socket.io connection that sends along each new price as it's updated. 

And using a ColdSignal to hold these is nice because it might take a significant amount of time to set up each socket connection, so you want to show each stock being added to the list as it becomes ready, instead of returning a big array all at once. And of course if you want to replay these values to different subscribers to avoid repeating the expensive network requests, the outer signal has to be a ColdSignal. 

And then maybe you want to merge this ColdSignal of HotSignals and transform that into a live-updating sum or average. I did something similar to this with RAC 2.x when I worked on the [Benzinga](http://www.benzinga.com/) app (although I didn't fully understand RAC at the time so it wasn't quite the same).

I'm sure there are other use cases out there as well, but either way, if this is sounding too contrived or too specific, I'd still be happy to reimplement the merge(SequenceType) using pipe(). Just think this is worth considering.