Improved the efficiency of the code by:
	-- Having a fixed number (1) of hidden layers
	-- Setting the thetas as views into a continuous block of memory, so that
	   they can be ravelled and unravelled in place when being used by the
	   optimisation procedures

The code should be suitable for extension to use sparse matrices for the X input
Deleted roll and unroll function as they are no longer needed
Now works for inputs of type scipy.sparse csr_matrix\nAlso added a new example file which uses an input of this type