Reconstruction ip

This implements a reconstruction error term and the inner product layer in one. This is useful for replicating past work such as [1]
[1] Le, Quoc V., et al. "ICA with Reconstruction Cost for Efficient Overcomplete Feature Learning." NIPS. 2011.

The test's show errors when float data type is used. I think these are numerical errors (errors add up because of the several matrix multiplications involved in computing the gradient). No errors are reported for double data type.
This does not support a bias term.