Initial steps towards MVVM

This is mostly new territory for me, so I'm taking it slowly. 

Also, I'm waiting to [hear back](https://github.com/specta/specta/issues/38) from the Specta folks about XCTest integration.