Initial commit.

Finished prototype, beginning exhaustive testing and refactoring.
Merge branch 'master' of github.com:markfinger/um