Nanomagnetic and Spintronic Devices for Energy-Efficient Memory and Computing