Add iD.Context

This is a facade interface that ties together a bunch of
different internal objects and will make it easier to write
tests for behaviors, modes, and operations.
Hoist functions up a scope
iD.Context -> iD

All the UI setup code moved to iD.ui.
Merge controller into iD
Arrange
Pass around context rather than map