What are Halbach Arrays, and What are They Used for?