VLSI Implementations of Learning and Memory Systems: A Review