Spintronics as a non-volatile complement to modern microelectronics