Add getAll(Unoccupied|Occupied)Locations methods

with corresponding tests
Switch from Set to List where appropriate

Previously, I had used List<E> instead of Set<E> in some places where a
Set<E> really is more appropriate. I had done this with the intention of
allowing students to work with an interface with which they are already
familiar. However, it seems to make more sense to expose them to more
realistic scenarios, so that they can (a) learn how to learn a new API
and (b) recognize the difference between Lists and Sets. Also, the
differences between the two are quite minor (they're both Collections,
after all) so it shouldn't be a large impediment to progress.