Memory refactor

move around some code to make it more memory efficient
Pretrain layer 1 complete

Modified rbm.m to be a function and use cell arrays of data batches
instead of matrices.
Pretrain all layers complete

Now pretrains all three layers of the dbn (successfully).
Train and test error calculation

Assumes polyphony is known. TODO: polyphony estimation from
probability vector of dbn output.
Refactor train test recall calculations

create a function that performs the error calculations. Not sure why it
wasn't like this in the Hinton code ...
Train multiple songs

HUGE commit. Finished backpropagation local training after the pretrain.
Fixed a bug that prevented the prediction labels from being calculated
properly. Now reports the correct recall. Updated the code to use
spectrogram frames from multiple songs instead of just one. Everything
seems to be working nicely. 50%+ recall on epoch 3.

TODO: polyphony estimation.