Fix error handling, also migrate to go1.3

@kvigen You need to close the channel (or more correctly, you can't simply send one value into the channel).  Each step of the pipeline (two at this point) are doing their sends in selects on done, sending a single value into the channel will let one of them exit but not the other.  Closing the channel allows the channel to immediately return its null value to all receivers (thus cancelling all previous stages in the pipeline without caring about how many of them there are).  I know this because my initial implementation did just as you said and sent a single value into the channel, it resulted in deadlock.

With regards to closing the channel twice, I really don't have a good answer for why that isn't a problem here.  I will look into that more closely.