Lineup

This pull request adds the lineup as a model abstraction for open pages. This was a warmup for a lengthy refractoring that ran into browserify dependency loops and had to be abandoned. I've gone through these commits again and feel that they are safe and a positive step forward. After many local forks and stashes I seem to have broken the commit line enough that github won't simply merge. I'll try merging it locally