Add a Datalist input to the list of core inputs

Born from https://github.com/justinfrench/formtastic/issues/1047
Includes the input, documentation for YARD and README, and specs
Also adds some custom_macros which are generic and can be reused
Why are you stripping "_id"? If this must stay in there, then maybe it needs to be a bit more specific, like…

```
.gsub(/_id$/, "")
```

… but I really think we could just tolerate leaving it in there. Also see my comment further down about `html_id_of_datalist`.