Mod block

# Technical Refactoring

There are lot of things in this PR : 
 * First there is a refactorization of read_path: it's now done in a function accepting a visitor.
 * Then we remove the journey_pattern_point_connections
 * Finally we introduce a next_vj and prev_vj in vehicle_journeys, and we use this in the algorithm.

In the algorithm, at the end of a computation of a journey_pattern if the last taken vehicle_journey has a next_vj, we apply it.

## Benchmark

Centre instance (one with block_id)

|                             | mod_block_id    | dev         |
|:--|:--:|:--:|
| Memory               | 224MB               |  928 MB |
| Time per request |  ~60ms              |   ~170ms  |

SNCF instance (without block_id)

|                             | mod_block_id    | dev         |
|:--|:--:|:--:|
| Memory               | 275MB               |  271MB |
| Time per request |  ~150ms              |   ~140ms  |

So when there are no block_id there is an overhead.