Create a base stream for handling core functionality

This will provide the ability to build upon the downloading functions
for streams from somewhere other than Soundcloud.
Also improve a bit of error handling