refactored code & implemented new loading method using 1 buffer per song

So I refactored the code by putting all the variables needed to play,
load, pause, etc. a song into a struct 'Song' in main.h.

I also implemented new way to load and play the songs using only 1
buffer per song. I think way is more reliable than the 2 buffer method,
and shouldn't glitch out like before (although it does have a little
extra noise if you listen to it carefully, but I don't think its a big
deal)
--> most of the work is done in load(), and I basically load the buffer
using load() and empty the buffer with the interrupt. It wraps around
when it reaches to the end (The function reads faster than the interrupt
empties so I have to make it wait for the interrupt from time to time)

I think you'll probably have to modify the dual channel code now though.
So if you think we should keep the old 2 buffer method or make any
changes just let me know.