Extracts out a BaseBookParser, PDFParser and MarkdownParser class from book_handler logic
The basic contract is that the parser classes populate 4 attributes that are used by the book_handler logic
- content_texts
- content_lengths
- book_metatdata
- processed_nav_structures (used by the method get_chapters on the BaseBookParser class)
Adds tests to validate the changes as well in tests/
Run tests from the abogen dir as follows
```bash
python -m unittest discover
```