Refactor boundary stuff into Boundaries trait

Since it has nothing to do with the actual Game of Life logic, I
figured it belonged separately.

Alas, I've taken the point-free stuff out too. Scala just isn't
designed to work that way.