Add table_of_functions template

In order to avoid having to maintain the tables of functions every time
we add a new function, I decided to do it programmatically using the new
table_of_functions template.

Newly added functions must contain `category` and `description` fields. The
`category` field is used for the navigation on the right hand side and for
constructing tables of functions. the `description` field is extracted into
the table.

Nothing on the website actually changes with this PR. It is more a matter
of structure.