Split problem and problem submissions, closes #20

I don't know what I was thinking before, maybe that this project would
just be ~200 lines.
General cleanup