WIP: Separate fit and dbfit logic

@javornikolov 

this isn't mergable, this is more WIP to show what I've been doing to separate fit and dbfit logic.

A lot of this is exploratory (eg naming, class structure, etc) but I'll probably be able to peel off some changes from this PR that feel good and throw the rest away.