Add preferences interface!

Lots going on here, I contemplated summarizing it, but…

To be continued. This implements the interface and adds a couple of
prefs, more still need to be decided and added.