Use minimized cell-type wrappers throughout the codebase
Not every cell type belongs on a circuit; not every relay cell type belongs on an open stream. Right now we use if
checks to enforce these things, but it would be smarter to use a specialized set of types so that it's easy to see where the checks and conversions happen.