Add choices to custom data fields

Waiting on QA
@twymer
Why change `CustomDataField` require an `init` call immediately after instantiation rather than passing args to the constructor?