Matrix class with obstacles

* Added obstacle rendering according to matrix
* Changed Matrix to update client according to info recieved during
  update()
Fix frame delay calculation so we don't hog the cpu
Decrease frame rate

We don't have any used for 60 frames per second. 30 frames per second
should be good enough even if we add some animations.
Draw only when components have changed.

Previously we were drawing the same images for no reason, hogging the
cpu.
Introduce Component interface

All game components use now the Component interface, simplifying
initialization, update and drawing.
Rename screen to surface

pygame draws on surface, which is part of the screen. Using correct
pygame term helps to find pygame documentation.
Import modules at the top level
Set window caption
Unify resources file names
Draw cars
Simplify texture loading
Reconnect faster to server
adding build system

Signed-off-by: Yaniv Bronhaim <ybronhei@redhat.com>
Fix ugly seems between backgroung images

The seems were introduced by careless refactoring, removing sorting of
background images.
Add error module

Currently contains server errors.
Raise game errors for message parsing errors

When expected error happens, the application should handle it instead of
failing with a traceback.
Make common a package
Add client joining and improve error handling

Client is started now with a name argument, and join the server using
this name. Game server keeps now players dictionary and send it to
clients so everyone knows when a player joins and can update the player
sstatus.

Currently a player does not keep any game data; we should add a Player
class to keep game data such as location, number of lifes, score etc.

Server returns now errors for expected client errors.
Display player name in the game window
Actions and obstacles enum fix