Added Sparse Autoencoder to the neural_network folder

<h1>Sparse Autoencoder</h1>


<h3>Properties:</h3>
-Optimization is done via 'scipy.optimize.fmin_l_bfgs_bfmin_l_bfgs_b' which is very efficient and powerful
-Everything is vectorized, except the minibatch loop
-The algorithm was developed based on the tutorials/references given by Prof. Andrew NG,
[1] http://ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm
[2] http://ufldl.stanford.edu/wiki/index.php/Gradient_checking_and_advanced_optimization
[3] http://ufldl.stanford.edu/wiki/index.php/Exercise:Sparse_Autoencoder


<h3>TODO:</h3>
-Fix non-standard code to adhere to scikit's convention 
   (some practices used in the code may not be efficient nor reader friendly)
-Add code that sets random seed 
-Add a complete example on using Sparse Autoencoder (although there is a small example within the sae.py file)
-Remove the comments in the file (They are there for debugging purposes only)

Your comments/feedback will be very useful!!