Optimize calc_dist_all_users_to_each_cell in Cluster

Reimplement the calc_dist_all_users_to_each_cell method in Cluster class
with more efficient code.
Add the CellSquare class
Add specific implementation add_user to CellSquare

The general implementation in CellBase uses the cell radius, but it does
not work correctly for a square shaped the Cell.
Change _calc_cell_positions_square method

Change the _calc_cell_positions_square method in Cluster class.
Add some tests for CellSquare class
Merge branch implementing 'square' cell type

New CellSquare class in cell/cell.py