Refactored Snake.hs + redesign

Refactors Snake.hs which was becoming a mess. Specifically: old uses of
`liftA2` have been removed in favor of specific `(+)`, `(-)`, `(*)`
operators (the (*) is not exactly the best thing since sliced bread, but
every time it's used is in pair with a `(pure x)` statement, which
clearly shows an equivalence with `fmap (* x)`, which is somewhat
acceptable); variables now have
sensible names and certain variables have been removed to generate more
concise and readable statements; the `moveSegment`, `moveHead`
shenaningan has been removed (thanks god!).

As far as the display function goes, `Segment` is no longer `Drawable`,
but nobody cares because `Segment` is not exported anymore. :P

The draw function has been simplified to simply draw a path around the
snake instead of multiple circles everywhere. This led to the creation
of functions to get the top, right, bottom, left position for every
segment. It makes me think we might need to export a specific `Segment`
module; or maybe just define a specific Lens's setter. Is that even
possible? No idea. Probably.

Anyway, Jefffrey here. Remember to pay your bills.