Use nonatomic for properties and clean up

This changes retaining behavior, meaning properties are not returned
retained and autoreleased anymore, so a property returned from a getter
now needs to be manually retained and autoreleased before calling the
setter. However, this is rarely the case and not using atomic improves
performance.