I'm looking into implementing this, and I'm not 100% sure where to start, but I think I can figure it out. What I'm actually curious of is the fact that it isn't possible to do something like this:
```
dynamic([row], %{foo: row.foo})
```
which is the main limitation between making selects work exactly like other things (allowing dynamics at the top level).
Would we rather make it possible to have map and merge as valid expressions in dynamics, and the require selects to be dynamics at the top level?
Or would it be better to traverse the select?
And in the case of traversal, are there any tips on when/where to do that? Should I do it in `Ecto.Query.Builder.Select.select!/5`?
Would love a nudge in the right direction.