Fixed some concurrency issues with PixelPusher.

Fixed some obvious concurrency problems, but many remain.
All access to strips (both read and write) require the stripLock to be
held, including during iteration. This fixes
ConcurrentModificationException that occured during iteration.
Returning strips outside the class now returns a defensive copy to
prevent external mutation.

All multable fields are now intances of AtomicX to ensure that
mutations are visible in a multi-threaded environment. It is possible
that threads cache local copies of variables preventing those threads
from seeing the results of mutations. Using the AtomicX classes ensures
the visibility of field changes.