Adds EnumInput

This uses a little magic to infer how your enum works,
but I think this will work in most cases.