fastify everything
This updates odgi's node_t objects to store edges and path steps in DYNAMIC hacked_vectors (bit-packed vectors), and adds an encoder to reduce the bitwidth of the path step vector (as in the dynamic GBWT).
Paths can be added and manipulated in parallel. Locking is provided by atomic flags on each node and the path metadata objects. The path metadata is accessed through lock free maps keyed by string and integer. This allows us to build graphs from GFA in parallel. The graph is no longer copyable due to its inclusion of these atomic primitives.
The apply_ordering function, long a thorn in the side of odgi, is rewritten so that each stage of the rewrite occurs in parallel. Relativistic updates to the node path encoding can be applied in parallel, efficiently. This reduces a major single-threaded runtime bottleneck when manipulating graphs with the odgi toolkit.
The odgi serialized format is not compatible with previous versions. The magic number in the file has been changed to reflect this.