Add some class-level documentation

Although there are more classes that still need these comments, this is
a good start at improving the documentation of our codebase.

Change-Id: Id51e96ac3c08b889e4afacc91b2af2dd41f861fe
Prefer `reduce` over `inject`

As pointed out by rubocop, this is the preferred way to call this
method, which is an alias for `inject`.

Change-Id: I34bf282a3dd2a62da9f0e44b9877f42efbc06733
Fix a couple of long lines

This makes the code friendlier to read for a lot of people.

Change-Id: Ic5036ca5a034f6cb1e0a2d6a4b25997c93bbd9b6
Remove redundant `begin` block in SnapshotWorker

As pointed out by rubocop, this `begin` block is redundant. Removing it
to simplify.

Change-Id: I4ad6e81daa844ad33ac57bcbae993b51848dc447
Replace `Proc.new` with `proc`

This is another thing pointed out by rubocop.

Change-Id: I3d283edb30a50aa42d56fb3e677600bb902cdfcf