Make TanH cleaner, more efficient, and possible to use in-place
Merge pull request #475 from jeffdonahue/tanh-fixes

Make TanH cleaner, more efficient, and possible to use in-place
Wrap the CPU and GPU math functions in math backend classes
Add the math backend to the Layer base class
Add device type independent getters to Blob
Remove tab from the code and reformat using google style
Allow Layer::Forward and Backward to be overridden
Use zero as the default return values of Blob data and diff methods
Add and test device type ignorant Forward and Backward in ConcatLayer
Add default implementations of Layer::Forward_cpu and Backward_cpu
Directly implement device neutral Forward and Backward in ConcatLayer
Generalize the math backend classes into device wrapper classes
Add Device::copy_from_cpu for the data layers
Unify the CPU and the GPU Forward of the DataLayer
Unify the CPU and the GPU Forward of the ImageDataLayer
Unify the CPU and the GPU Forward of the HDF5DataLayer
Unify the CPU and the GPU Forward & Backward of the HDF5OutputDataLayer
Merge the CPU and the GPU Backward of the data layers
Consolidate the CPU and GPU Forward of the WindowDataLayer
Deduplicate the CPU and the GPU Forward & Backward of the FlattenLayer