Fix bugs in best_driver example

After the addition of the world object, the code was not checking for
out of range location any more, crashing the client when tyring to drive
right or left out of the matrix.

Additionally when finding a peguin, the code was not picking the penguin
as it should. It found a penguin on the next row, then checked if a pick
is needed on the current row.

To make it easier to create readbale code, which is very important in an
example code for beginners, both world.watch_item_in_cell and valid_move
accept now a tuple argument for position. This allows creating code like
this:

    up = car.x, car.y - 1
    if valid_move(up):
        ...

Using easier world api, it was possible to fix both issues and make the
code much more readable.
Merge pull request #48 from nirs/examples

Examples fixes