spintronics fundamentals and applications