Add support for `enum`

Adding support for ActiveRecord `enum` was requested in #1059 by @grzesiek and @timoschilling.

ActiveRecord let's you defined an `enum` attribute like this:

```ruby
class Conversation < ActiveRecord::Base
  enum status: [ :active, :archived ] # or enum status: { active: 0, archived: 1 }
end
```

You're expected to have a `status` column in your database to match. Under the hood, this will define a bunch of methods. The interesting ones for our implementation are:

```ruby
Conversation.statuses # => { "active" => 0, "archived" => 1 }
Conversation.new(...).status # => "active" or "archived"
Conversation.new(...).defined_enums # => { "status" => { "active" => 0, "archived" => 1 } }
```

The big pieces in supporting `enum` (so far) seem to be:

- [x] automatically using `SelectInput` or similar on `enum` attributes (like we do for `belongs_to` associations)
- [x] automatically deriving the collection of options from the `enum` definition (like we do for `belongs_to` associations)
- [x] converting the `enum` options Hash into something we can use
- [x] correctly marking the right options as checked or selected
- [x] humanizing the option names ("active" => "Active", "on_hold" => "On hold")
- [x] allowing for I18n translations of the option names
- [x] documentation on SelectInput
- [x] raise an error for enum + multi-select (can't store multiple)
- [x] raise an error for enum on checkboxes input (can't store multiple)
- [x] documentation
- [x] real-world testing