Create more modularity inside src/core
The "src/core" section of our code is a bit of a catch-all: we could improve matters here if we can turn
src/core/or into a set of even smaller pieces.
Examples of pieces that we might extract are:
- Path selection
- The decision to build circuits
- circuit lifespan
- circuit construction implementation