My Scala implementation (with a monad!) of a addictive 2048 game