Add ability to enter new collection UDFs and edit saved collection UDFs

This is a nice, clean abstraction, except where otherwise noted.