[RDY/RFC] Use lua generator in place of ex_cmds_defs header trick

This only removes header trick. Compared to #788 I did not add missing include and did not remove dependency on `ex_cmds_defs` in `vim.h`. `transform_ex_cmds_defs.pl` script works also for Vim `ex_cmds.h` file, must be removed in case we add any additional information to `ex_cmds.lua` or start adding our own commands.

Ref #379, #549, #788
On July 21, 2014 2:06:49 PM GMT+03:00, Nicolas Hillegeer <notifications@github.com> wrote:
>> +local first = true
>> +local prevfirstchar = nil
>> +
>> +local byte_a = string.byte('a')
>> +local byte_z = string.byte('z')
>> +
>> +local cmdidxs = string.format([[
>> +static const cmdidx_T cmdidxs[%u] = {
>> +]], byte_z - byte_a + 2)
>> +
>> +enumfile:write([[
>> +typedef enum CMD_index {
>> +]])
>> +defsfile:write(string.format([[
>> +static CommandDefinition cmdnames[%u] = {
>> +]], #defs))
>
>> AFAIR I do not have non-integer keys or nil values. It will only be
>risky if we have enough commands to experience precision loss. If you
>see a place where this is not true please point it.
>
>When we have more than 2^53 commands I suppose we'll have bigger
>problems. Perhaps a comment above the table itself to not leave gaps or
>have nil values.
>
>---
>Reply to this email directly or view it on GitHub:
>https://github.com/neovim/neovim/pull/840/files#r15161604

There is an infinite number of incorrect things that must not be added to the table thus I do not see a reason to specially say about nil.

Though documentation about what exactly should be there in the table is the way to go: current state is not much different from former ex_cmds_defs.h which assumed programmer is smart enough to deduce what is there in that huge array (which honestly was not too hard).