Updated Counter#on_change to not use blocks

Blocks are not optmized on Ruby, so I'm using a simple contract: if
someone needs to listen to on_change, it must implement a public method
on_counter_change.
Updated Graphic and Playfield to use new on_change.
Using shifts to substitute multiplication and **

Shifts are more optimized (although I don't know if in Ruby it makes
such a difference) than multiplications, divisions and exponentiation.
Merge pull request #4 from mauricioszabo/simple-optimizations

Simple optimizations