Add 'data_frame' function (#376)

This adds a `data_frame` function as outlined in #376.

TODO:

- [ ] Recycle vectors of length 1
- [ ] Add unit tests
- [ ] Move more logic to C (?)
I think it might be ok to infer names from the values of `...`. That's handy for `data_frame(x, y)`