State pattern implementation & example.

Signed-off-by: Tomasz Kamiński <kaminski.tomasz.a@gmail.com>