Use Communication.publish() and minor cleanup
Preliminary implementation of display functions
Add implementation of macro-based enumerations
Implement enumerations used by IPython widgets