Use enums better.

Before, we were using positive to mean take, negative to mean put, and
zero to mean that we're done.

Now, we have an Enum to replace all three states. This is way better, as
it removes the weird `-x` and casting, and also makes intent much more
clear.