Implement Pressable for lists

In other news, `hold` is now a method of the type class, and not just a
utility function. This is because while pressing a single key is an
atomic operation, pressing multiple keys is not. So we need to take
extra precautions to make sure each individual key press is paired with
a release.