Implement fixed bindings

This implements *fixed* bindings, which produce dependencies immutable to rewriting.

It also introduces a new `Dependency` type for graph edges, does some refactorings, and starts using enum sets of flags for lots of booleans for better compatibility.