Simulated Annealing

Adds simulated annealing training algorithm to the network. So far, this is by far the fastest and most efficient training algorithm.

NOTE: Not sure if this is technically the correct annealing algorithm. I decided to set the starting matrix to the best matrix. I did this because by setting it to the current matrix, the algorithm failed to converge about 99% of the time. After the change, the algorithm converges 100% of the time with current temperature values.