Right now CodexHTMLForm::getButtons() creates an instance of HTMLSubmitField for the submit button, and an instance of HTMLButtonField for each of the buttons in $this->mButtons. This causes some issues:
- These buttons may not have a name or ID, but HTMLButtonField / HTMLSubmitField require the name and ID to be set
- These buttons may need a tooltip and access key, but HTMLButtonField doesn't handle those attributes
Instead, we should do something similar to what we did in HTMLTextField: create a static method to build the Codex component that we can just pass attributes into, and then use that static method both in HTMLButtonField::getInputCodex() and in CodexHTMLForm::getButtons().