Fixes to next song skipping and cache corruption

### Next song skipping ###

Prevents multiple songs from skipping after completion by adding
a sleep to prevent the callback from being fired multiple times
right as a song finishes.

Are any better ideas to do this (locking?) worth it, or is this sufficient?

### Cache corruption ###

Checks any existing cache files against the expected song duration passed down from SoundCloud. If the cached version didn't finish streaming properly, it is deleted and redownloaded.

### Misc ###

Edited the .gitignore so that Makefile, etc don't get accidentally committed.