Re-factor to add formatter

* Only one formatter now - PDF
* Formatter uses a basic Base class to enforce API
* Formatters delegate Card metadata accessors to matching methods on Card