Allow viewing and downloading previously downloaded books
Backend
Rewrite a lot of the core functionality to reduce coupling and be more agnostic to the caller. For example, no more global package state, all shared state encapsulated in structs, etc.
Update / modernize CLI portion
Add one off "download" and "search" CLI commands that wait for the file and then exit.
Fix segfault in CLI
Use contexts wherever possible over implementing custom channel solutions